1
00:00:00,199 --> 00:00:06,200
مرحباً بالجميع، هذا هو Access

2
00:00:02,439 --> 00:00:12,400
وقت الغداء. اليوم سوف نستمع

3
00:00:06,200 --> 00:00:17,080
عن كيفية استخدام واجهات برمجة تطبيقات الويب (REST APIs) في

4
00:00:12,400 --> 00:00:21,160
Access. متحدثنا اليوم هو جورج يونغ.

5
00:00:17,079 --> 00:00:25,079
جورج هو MVP من مايكروسوفت لكل من

6
00:00:21,160 --> 00:00:28,240
Access و Azure storage، وقد تعرف لأول مرة

7
00:00:25,079 --> 00:00:30,598
على Microsoft Access في أيام

8
00:00:28,239 --> 00:00:34,479
إصدار الأقراص المرنة من

9
00:00:30,599 --> 00:00:37,439
Office، وقام بتدريس الإحصاء وما يسمى

10
00:00:34,479 --> 00:00:41,679
بنظم المعلومات الإدارية (MIS). أوه

11
00:00:37,439 --> 00:00:41,679
نعم، أتذكر ذلك. في أوائل

12
00:00:42,119 --> 00:00:47,519
التسعينيات، عمل أيضًا كمطور برامج

13
00:00:44,920 --> 00:00:49,879
خلال الـ 25 عامًا الماضية، نصف

14
00:00:47,520 --> 00:00:53,359
ذلك الوقت كان في مايكروسوفت في حوالي

15
00:00:49,878 --> 00:00:57,280
كل قسم باستثناء Office، وهو الآن

16
00:00:53,359 --> 00:01:00,800
يدير شركة Dawson but software ويعمل

17
00:00:57,280 --> 00:01:03,000
بشكل أساسي على تطبيقات .net ولكن غالبًا

18
00:01:00,799 --> 00:01:07,359
ما يكون Access جزءًا من

19
00:01:03,000 --> 00:01:10,200
المزيج. لذا جورج، بدون إطالة، تفضل بالبدء.

20
00:01:07,359 --> 00:01:12,400
شكرًا لك ماريا، شكرًا لكم جميعًا.

21
00:01:10,200 --> 00:01:16,520
من الرائع أن أكون معكم

22
00:01:12,400 --> 00:01:16,520
في فترة الغداء هذه قبل عيد الشكر.

23
00:01:16,799 --> 00:01:21,118
كما قالت ماريا، اسمي

24
00:01:19,000 --> 00:01:23,640
جورج، وأنا أيضًا رئيس

25
00:01:21,118 --> 00:01:28,920
مجموعة مستخدمي Access في منطقة دنفر.

26
00:01:23,640 --> 00:01:28,920
لدينا موقع da.org.

27
00:01:30,000 --> 00:01:34,078
لا أعرف إذا كان لدى ماريا آلية

28
00:01:32,118 --> 00:01:40,158
لمشاركة

29
00:01:34,078 --> 00:01:44,959
الكود وما شابه، ولكن إذا ذهبتم إلى Da

30
00:01:40,159 --> 00:01:47,960
a.org وتوجهتم إلى

31
00:01:44,959 --> 00:01:49,478
العروض التقديمية، إذا ذهبتم إلى

32
00:01:47,959 --> 00:01:53,280
2023

33
00:01:49,478 --> 00:01:54,759
وهنا يمكنكم تحميل المواد

34
00:01:53,280 --> 00:01:57,718
والتي ستكون نفس مواد اليوم.

35
00:01:54,759 --> 00:02:00,640
ويمكنكم أيضًا على قناتنا على يوتيوب

36
00:01:57,718 --> 00:02:03,118
مشاهدة النسخة الأطول

37
00:02:00,640 --> 00:02:05,759
من عرض اليوم. لقد قدمت

38
00:02:03,118 --> 00:02:07,640
حوالي ساعة ونصف أكثر تفصيلاً

39
00:02:05,759 --> 00:02:09,199
إلى حد ما من نسخة

40
00:02:07,640 --> 00:02:11,680
العرض، واليوم سيكون

41
00:02:09,199 --> 00:02:13,439
بمستوى أعلى ويركز على

42
00:02:11,680 --> 00:02:16,920
المفاهيم العامة ثم استعراض

43
00:02:13,439 --> 00:02:20,519
الكود قليلاً.

44
00:02:16,919 --> 00:02:23,159
نعم، من الرائع أن أكون هنا.

45
00:02:20,519 --> 00:02:26,239
لدي منزل هادئ، أطفالي

46
00:02:23,159 --> 00:02:28,598
بالخارج يجرون اختبارات التايكوندو، لذا

47
00:02:26,239 --> 00:02:30,599
إنه يوم جيد للتعامل مع

48
00:02:28,598 --> 00:02:34,000
واجهات برمجة تطبيقات الويب في

49
00:02:30,598 --> 00:02:36,839
Access. لا تترددوا في المقاطعة في

50
00:02:34,000 --> 00:02:38,479
أي وقت إذا كان لديكم سؤال. لقد

51
00:02:36,840 --> 00:02:39,920
قلصت المحتوى ليكون لدينا

52
00:02:38,479 --> 00:02:42,598
الكثير من الوقت للأسئلة،

53
00:02:39,919 --> 00:02:46,000
لذا لا تترددوا في المشاركة.

54
00:02:42,598 --> 00:02:50,479
ارفعوا أصواتكم وقولوا "لدي سؤال".

55
00:02:46,000 --> 00:02:53,759
حسنًا، واجهات برمجة تطبيقات الويب أو REST.

56
00:02:50,479 --> 00:02:56,759
إذًا، ما هي؟

57
00:02:53,759 --> 00:03:00,759
دعوني أبدأ أولاً بعرض

58
00:02:56,759 --> 00:03:03,598
توضيحي. هنا لدي

59
00:03:00,759 --> 00:03:06,719
جدول قاعدة بيانات في Access

60
00:03:03,598 --> 00:03:08,318
يسمى "City lat long"، وكما ترون لدي

61
00:03:06,719 --> 00:03:11,280
أربع مدن فقط مع

62
00:03:08,318 --> 00:03:13,878
خطوط الطول والعرض الخاصة بها، ثم لدي

63
00:03:11,280 --> 00:03:16,598
نموذج يسمى "City

64
00:03:13,878 --> 00:03:20,439
weather"، وهذا النموذج يسمح لي

65
00:03:16,598 --> 00:03:23,000
باختيار مدينة ثم

66
00:03:20,439 --> 00:03:25,919
الحصول على حالة الطقس هناك. على سبيل المثال، إذا

67
00:03:23,000 --> 00:03:28,280
اخترت دنفر، فأنا في

68
00:03:25,919 --> 00:03:30,679
كولورادو، لذا إذا نقرت على "Get

69
00:03:28,280 --> 00:03:34,080
weather"، لاحظوا أنه يعود بدرجة

70
00:03:30,680 --> 00:03:39,000
حرارة 51 فهرنهايت، وسرعة رياح

71
00:03:34,080 --> 00:03:42,599
4.3، واتجاه رياح 35

72
00:03:39,000 --> 00:04:43,959
درجة. ما يحدث، وسننظر

73
00:03:42,598 --> 00:04:46,039
في هذا بمزيد من التفصيل

74
00:03:43,959 --> 00:04:48,640
بعد قليل، ولكن ما يحدث هنا هو

75
00:03:46,039 --> 00:04:52,000
أنه في

76
00:03:48,639 --> 00:04:56,039
VBA، عندما ينقر شخص ما على المدينة،

77
00:03:52,000 --> 00:03:57,438
في الخلفية، يأخذ VBA

78
00:03:56,039 --> 00:04:00,919
خط العرض

79
00:03:57,438 --> 00:04:04,359
وخط الطول لتلك المدينة و

80
00:04:00,919 --> 00:04:06,318
ثم يستدعي خدمة ويب، وهي

81
00:04:04,360 --> 00:04:10,280
في الأساس مجرد URL، مجرد عنوان ويب.

82
00:04:06,318 --> 00:04:12,839
يمرر خط العرض و

83
00:04:10,280 --> 00:04:16,680
خط الطول إلى خدمة الويب تلك، ثم

84
00:04:12,840 --> 00:04:20,319
تعيد خدمة الويب إلى المتصل

85
00:04:16,680 --> 00:04:22,240
بيانات، في هذه الحالة بيانات الطقس. هذا

86
00:04:20,319 --> 00:04:25,279
هو نوعًا ما كيف تعمل واجهات برمجة تطبيقات الويب. إنها

87
00:04:22,240 --> 00:04:27,918
بمثابة مصدر بيانات خارجي

88
00:04:25,279 --> 00:04:31,359
خارج تطبيقك، سواء كان ذلك التطبيق

89
00:04:27,918 --> 00:04:35,879
Access أو Windows 32 أو

90
00:04:31,360 --> 00:04:39,160
Excel أو تطبيق ويب أو Power Apps أو

91
00:04:35,879 --> 00:04:41,759
أياً كان. هذا هو المستوى العام.

92
00:04:39,160 --> 00:04:44,800
واجهة برمجة تطبيقات الويب في جوهرها هي مجرد URL

93
00:04:41,759 --> 00:04:48,560
إلى عنوان على الإنترنت.

94
00:04:44,800 --> 00:04:51,759
هذا العنوان يكشف عن نقاط نهاية

95
00:04:48,560 --> 00:04:55,319
توفر الوصول إلى البيانات. فبينما يعيد

96
00:04:51,759 --> 00:05:00,879
URL عادي صفحة ويب،

97
00:04:55,319 --> 00:05:02,519
يعيد URL واجهة برمجة تطبيقات الويب بيانات.

98
00:05:00,879 --> 00:05:06,759
إذا سمحتم، أود أن أريكم مثالاً سريعًا

99
00:05:02,519 --> 00:05:08,038
على ذلك. هنا مثال بسيط

100
00:05:06,759 --> 00:05:12,479
لـ asp.net

101
00:05:08,038 --> 00:05:14,879
موقع ويب قمت ببنائه لهذا العرض.

102
00:05:12,478 --> 00:05:17,038
وكما ترون، إنها مجرد قائمة

103
00:05:14,879 --> 00:05:19,478
من المنتجات، أربعة منتجات: آيس كريم،

104
00:05:17,038 --> 00:05:21,680
شراب شوكولاتة، رشات، وموز.

105
00:05:19,478 --> 00:05:24,879
لاحظوا أن هناك اسم المنتج، سعر الوحدة،

106
00:05:21,680 --> 00:05:27,560
ثم هناك بعض واجهة المستخدم

107
00:05:24,879 --> 00:05:30,839
لإدارة، كما تعلمون،

108
00:05:27,560 --> 00:05:31,879
تعديل عنصر، حذف عنصر، إضافة

109
00:05:30,839 --> 00:05:37,038
عنصر جديد.

110
00:05:31,879 --> 00:05:40,240
هذا هو Local Host/products.

111
00:05:37,038 --> 00:05:41,918
هذا مجرد URL على جهازي المحلي.

112
00:05:40,240 --> 00:05:44,960
كان بإمكاني بسهولة تحميله

113
00:05:41,918 --> 00:05:48,639
إلى Azure إذا أردت، أو في أي مكان على

114
00:05:44,959 --> 00:05:52,000
الإنترنت. لذا تخيلوا أن هذا هو

115
00:05:48,639 --> 00:05:52,000
www.ac lunch

116
00:05:52,199 --> 00:05:57,639
time.com/products. نفس الشيء. هذا هو

117
00:05:54,918 --> 00:06:01,159
URL وهذا هو

118
00:05:57,639 --> 00:06:04,199
HTML. أنا أستدعي هذا URL وأحصل على

119
00:06:01,160 --> 00:06:05,120
HTML هذا في المقابل. وبالمثل، إذا قمت بـ

120
00:06:04,199 --> 00:06:08,240
عرض

121
00:06:05,120 --> 00:06:10,399
المصدر، لاحظوا أنني أحصل على نوع مستند

122
00:06:08,240 --> 00:06:13,598
HTML في المستند، ثم مجموعة من

123
00:06:10,399 --> 00:06:15,120
أشياء HTML، ولكن هنا في الأسفل يمكنكم رؤية

124
00:06:13,598 --> 00:06:17,800
أن لدي جدول،

125
00:06:15,120 --> 00:06:21,079
ثم صف به رأس

126
00:06:17,800 --> 00:06:24,360
اسم المنتج، ثم هنا في الأسفل صف آخر

127
00:06:21,079 --> 00:06:27,959
به الاسم والسعر وأشياء التعديل.

128
00:06:24,360 --> 00:06:31,319
صف آخر، الاسم، السعر والتعديل.

129
00:06:27,959 --> 00:06:35,120
هذا ما يعود به

130
00:06:31,319 --> 00:06:39,039
هذا. الآن إذا وضعت بدلاً من products

131
00:06:35,120 --> 00:06:41,079
API/products/API، ما أحصل عليه

132
00:06:39,038 --> 00:06:42,598
في المقابل، وأنا آسف لأن هذا ليس مطبوعًا بشكل جميل،

133
00:06:41,079 --> 00:06:45,758
كنت أعرف

134
00:06:42,598 --> 00:06:48,399
كيف أفعل ذلك ولكني لا أستطيع أن أجد

135
00:06:45,759 --> 00:06:50,439
كيفية عرضه في وضع الطباعة الجميلة، ولكن

136
00:06:48,399 --> 00:06:54,879
لاحظوا هنا أن لدي

137
00:06:50,439 --> 00:06:58,439
هذه مجرد بيانات، هذا كل ما في الأمر.

138
00:06:54,879 --> 00:07:00,399
لدي ID، اسم المنتج،

139
00:06:58,439 --> 00:07:02,719
اسم المنتج هو اسم الحقل، ثم

140
00:07:00,399 --> 00:07:05,439
الآيس كريم هو البيانات، ثم سعر الوحدة

141
00:07:02,720 --> 00:07:06,800
اسم الحقل ثم السعر.

142
00:07:05,439 --> 00:07:09,879
ثم لدي كيان آخر

143
00:07:06,800 --> 00:07:15,560
محاط بأقواس معقوفة.

144
00:07:09,879 --> 00:07:19,000
ID، الاسم، سعر الوحدة، فاصلة، العنصر الثالث.

145
00:07:15,560 --> 00:07:21,720
لذا ترون أنها نوع من مصفوفة من

146
00:07:19,000 --> 00:07:23,720
العناصر المحاطة بأقواس معقوفة، كل منها

147
00:07:21,720 --> 00:07:28,120
يحتوي على

148
00:07:23,720 --> 00:07:30,680
ID، اسم، وسعر. لذا تحت الغطاء

149
00:07:28,120 --> 00:07:34,280
ما يقابل ذلك هو، كما تتخيلون،

150
00:07:30,680 --> 00:07:37,720
قاعدة بيانات. هنا يمكنكم رؤية

151
00:07:34,279 --> 00:07:39,959
جدول قاعدة بياناتي. لدي قاعدة بيانات

152
00:07:37,720 --> 00:07:43,039
اسمها Web API demo، هذا في SQL

153
00:07:39,959 --> 00:07:45,519
Server. لدي جدول اسمه Product، و

154
00:07:43,038 --> 00:07:50,240
هنا تلك المعلومات: ID، اسم المنتج،

155
00:07:45,519 --> 00:07:51,799
السعر. فبينما في صفحة الويب،

156
00:07:50,240 --> 00:07:54,960
صفحة الويب العادية،

157
00:07:51,800 --> 00:07:57,720
تقوم صفحة الويب بمعالجة البيانات

158
00:07:54,959 --> 00:08:00,038
تحت الغطاء وتضع HTML

159
00:07:57,720 --> 00:08:02,639
حولها لتبدو أجمل

160
00:08:00,038 --> 00:08:07,399
ولتكون قادرًا على التفاعل معها،

161
00:08:02,639 --> 00:08:11,918
مع واجهة برمجة تطبيقات الويب، يتم إرجاع هذه البيانات

162
00:08:07,399 --> 00:08:15,198
كبيانات فقط، وليس كـ HTML منسق.

163
00:08:11,918 --> 00:08:18,318
آمل أن يكون هذا واضحًا. إنها

164
00:08:15,199 --> 00:08:19,158
نفس الآلية بشكل أساسي، إنها مجرد

165
00:08:18,319 --> 00:08:23,240
URL،

166
00:08:19,158 --> 00:08:26,279
ولكن في حالة طلب HTTP عادي لـ HTML،

167
00:08:23,240 --> 00:08:29,560
تحصل فقط على HTML منسق.

168
00:08:26,279 --> 00:08:31,279
مع واجهة برمجة تطبيقات الويب، تتفاعل في الواقع مباشرة مع البيانات.

169
00:08:29,560 --> 00:08:35,958
يتم تمرير البيانات ذهابًا وإيابًا إلى

170
00:08:31,279 --> 00:08:39,319
المتصفح. تحتوي واجهات برمجة تطبيقات الويب على نوعين من

171
00:08:35,958 --> 00:08:42,718
الوصول إلى البيانات: لديك وصول للقراءة،

172
00:08:39,320 --> 00:08:46,240
ثم لديك وصول للقراءة والكتابة. لذا،

173
00:08:42,719 --> 00:08:48,320
كما ترون في النقطة الثانية،

174
00:08:46,240 --> 00:08:50,600
الوصول إلى بيانات API

175
00:08:48,320 --> 00:08:52,519
يشبه أي مصدر بيانات آخر

176
00:08:50,600 --> 00:08:56,080
مثل قاعدة البيانات العلائقية.

177
00:08:52,519 --> 00:09:00,679
لذا يمكنني جلب أو الحصول على أو

178
00:08:56,080 --> 00:09:03,839
تحديد بيانات (قراءة)، أو يمكنني إرسال أو نشر

179
00:09:00,679 --> 00:09:06,519
أو إضافة بيانات (كتابة). سيكون لدينا

180
00:09:03,839 --> 00:09:07,800
مقارنة في ثانية لـ SQL، ولكن

181
00:09:06,519 --> 00:09:10,959
يمكنك التفكير في نفس الأشياء التي

182
00:09:07,799 --> 00:09:15,240
ستفعلها في Access: إضافة سجل،

183
00:09:10,958 --> 00:09:17,759
تحديث سجل، حذف سجل، وما إلى ذلك.

184
00:09:15,240 --> 00:09:19,919
لذا لديك وصول للقراءة ولديك

185
00:09:17,759 --> 00:09:21,600
وصول للكتابة لواجهات برمجة تطبيقات الويب. الأكثر

186
00:09:19,919 --> 00:09:24,879
شيوعًا هو

187
00:09:21,600 --> 00:09:27,519
القراءة. لذا، وصول القراءة، ولهذا

188
00:09:24,879 --> 00:09:30,360
ترسل طلب URL مع معلمات اختيارية

189
00:09:27,519 --> 00:09:33,560
وتتلقى استجابة مع البيانات،

190
00:09:30,360 --> 00:09:36,560
وهو بالضبط ما رأيناه

191
00:09:33,559 --> 00:09:39,119
عندما نظرنا إلى هذين الموقعين،

192
00:09:36,559 --> 00:09:42,518
والذي سأعود إليهما. في هذه الحالة،

193
00:09:39,120 --> 00:09:45,240
هذا هو URL الذي أرسلته: API/products/API

194
00:09:42,519 --> 00:09:46,639
وأحصل على قائمة بكل المنتجات

195
00:09:45,240 --> 00:09:49,240
عائدة.

196
00:09:46,639 --> 00:09:52,559
كنظرة سريعة إلى الأمام، إذا أردت

197
00:09:49,240 --> 00:09:57,000
الحصول على منتج واحد، سأذهب إلى /2

198
00:09:52,559 --> 00:10:00,719
للعنصر الثاني، والآن لاحظوا أنني أحصل

199
00:09:57,000 --> 00:10:03,720
على منتج واحد فقط أو إدخال واحد

200
00:10:00,720 --> 00:10:06,240
من قاعدة البيانات بمعرف 2. هذا هو،

201
00:10:03,720 --> 00:10:09,079
إذا جاز التعبير، مثل استعلام select.

202
00:10:06,240 --> 00:10:12,120
الآن إذا غيرته إلى واحد، سأحصل

203
00:10:09,078 --> 00:10:12,120
على الأول.

204
00:10:12,958 --> 00:10:20,599
في عالم الويب، إذا أردت رؤية

205
00:10:15,879 --> 00:10:23,519
رقم اثنين، انظروا، إنه يبني URL كامل.

206
00:10:20,600 --> 00:10:25,519
أتمنى ذلك. لذا Local Host/products/details/

207
00:10:23,519 --> 00:10:28,560
2. هذا هو

208
00:10:25,519 --> 00:10:32,159
اصطلاح MVC لكيفية الوصول

209
00:10:28,559 --> 00:10:35,278
إلى منتج فردي، وفي واجهات برمجة تطبيقات الويب

210
00:10:32,159 --> 00:10:37,600
بشكل مشابه، تضع فقط معلمات، تضيف

211
00:10:35,278 --> 00:10:39,879
معلمات إلى هذا URL لتضييقه.

212
00:10:37,600 --> 00:10:42,680
هذا هو نوعًا ما الأساس

213
00:10:39,879 --> 00:10:45,360
لواجهة برمجة تطبيقات الويب.

214
00:10:42,679 --> 00:10:48,199
هنا لدي مقارنة سريعة بينها.

215
00:10:45,360 --> 00:10:51,720
HTML مقابل SQL مقابل

216
00:10:48,200 --> 00:10:53,399
Json. التنسيق الذي تعيده واجهة برمجة تطبيقات الويب بشكل افتراضي

217
00:10:51,720 --> 00:10:56,879
يسمى Json، وهو

218
00:10:53,399 --> 00:10:59,919
JavaScript object notation. لذا مرة أخرى،

219
00:10:56,879 --> 00:11:02,958
هنا HTML، إنه في شبكة،

220
00:10:59,919 --> 00:11:05,759
جدول منسق. هنا SQL الخام

221
00:11:02,958 --> 00:11:08,838
من قاعدة بيانات SQL Server التي

222
00:11:05,759 --> 00:11:10,200
نظرنا إليها، وهنا تلك البيانات معادة

223
00:11:08,839 --> 00:11:12,399
بتنسيق Json.

224
00:11:10,200 --> 00:11:15,480
ومرة أخرى، لاحظوا أن لدينا

225
00:11:12,399 --> 00:11:16,919
هذه الأقواس المربعة حول كامل

226
00:11:15,480 --> 00:11:19,000
العائد.

227
00:11:16,919 --> 00:11:22,399
الكائن، ثم ضمن ذلك لدينا

228
00:11:19,000 --> 00:11:23,720
كائنات محاطة بأقواس معقوفة مفصولة بفواصل. لدينا،

229
00:11:22,399 --> 00:11:26,519
إذا جاز التعبير، مجموعة

230
00:11:23,720 --> 00:11:29,639
من هذه الكيانات التي يوجد منها

231
00:11:26,519 --> 00:11:31,200
أربعة، كل منها يقابل صفًا

232
00:11:29,639 --> 00:11:34,759
في قاعدة البيانات.

233
00:11:31,200 --> 00:11:38,560
السؤال الآن من منظور Access هو

234
00:11:34,759 --> 00:11:42,838
كيف يمكننا الاستفادة

235
00:11:38,559 --> 00:11:46,000
من هذا؟ كيف يمكننا الوصول إلى هذه البيانات البعيدة؟

236
00:11:42,839 --> 00:11:49,399
قبل ذلك، دعوني ألقي نظرة سريعة على

237
00:11:46,000 --> 00:11:52,278
ماذا ولماذا واجهات برمجة التطبيقات على مستوى عالٍ. ما

238
00:11:49,399 --> 00:11:54,600
هي مزايا واجهات برمجة تطبيقات الويب مقارنة بـ

239
00:11:52,278 --> 00:11:58,320
الوصول التقليدي للبيانات، لنقل من

240
00:11:54,600 --> 00:12:00,839
واجهة خلفية لـ Access أو واجهة خلفية لـ SQL. من

241
00:11:58,320 --> 00:12:04,639
منظور الاستهلاك، لديك

242
00:12:00,839 --> 00:12:07,279
الوصول إلى البيانات من جميع أنحاء الإنترنت.

243
00:12:04,639 --> 00:12:10,399
هناك الآلاف والآلاف

244
00:12:07,278 --> 00:12:13,519
من واجهات برمجة تطبيقات الويب المتاحة للجمهور.

245
00:12:10,399 --> 00:12:16,639
أعلم أن جورج هيبورث قد

246
00:12:13,519 --> 00:12:19,839
استخدم عددًا منها لمشاريع مختلفة

247
00:12:16,639 --> 00:12:24,198
استخدمها. يمكنك استخدامها

248
00:12:19,839 --> 00:12:26,199
لمكتبة لفهرسة الكتب.

249
00:12:24,198 --> 00:12:30,319
يمكنك استخدام واجهة برمجة تطبيقات Google Books أو

250
00:12:26,198 --> 00:12:32,719
واجهة برمجة تطبيقات أخرى. تعطيه ISBN و

251
00:12:30,320 --> 00:12:35,079
سيعيد لك كل معلومات الكتاب

252
00:12:32,720 --> 00:12:38,440
لك: العنوان، المؤلف، وما إلى ذلك.

253
00:12:35,078 --> 00:12:42,958
بالنسبة للطقس، كما هو المثال الذي

254
00:12:38,440 --> 00:12:46,279
عرضته في البداية. بالنسبة لأسعار الأسهم،

255
00:12:42,958 --> 00:12:50,198
كل من خرائط Bing وخرائط Google

256
00:12:46,278 --> 00:12:52,600
تكشف عن ميزاتها كـ API، لذا يمكنك

257
00:12:50,198 --> 00:12:55,198
الوصول إلى الاتجاهات، يمكنك تمرير

258
00:12:52,600 --> 00:12:57,120
خط العرض وخط الطول والحصول على

259
00:12:55,198 --> 00:13:00,240
عنوان، يمكنك تمرير عنوان و

260
00:12:57,120 --> 00:13:03,320
الحصول على خط العرض وخط الطول.

261
00:13:00,240 --> 00:13:06,079
أشياء كثيرة، تحويل العملات. إذا

262
00:13:03,320 --> 00:13:08,920
بحثت فقط عن واجهات برمجة تطبيقات الويب المتاحة للجمهور

263
00:13:06,078 --> 00:13:10,078
في متصفحك، فالأمر مذهل.

264
00:13:08,919 --> 00:13:12,958
العديد منها مجاني.

265
00:13:10,078 --> 00:13:15,799
أود أن أقول إن النوعية الجيدة تميل

266
00:13:12,958 --> 00:13:18,799
إلى أن تكون مجانية حتى نقطة معينة، و

267
00:13:15,799 --> 00:13:22,240
بعد ذلك إما تكون مقيدة، بحيث لا يمكنك استخدامها إلا

268
00:13:18,799 --> 00:13:25,198
500 مرة في الأسبوع أو شيء من هذا القبيل، أو

269
00:13:22,240 --> 00:13:27,519
تدفع مبلغًا بسيطًا للوصول

270
00:13:25,198 --> 00:13:30,519
إلى ما هو أبعد من استهلاك قياسي.

271
00:13:27,519 --> 00:13:32,078
لذا لديك وصول إلى البيانات عبر

272
00:13:30,519 --> 00:13:33,799
الإنترنت. لديك كل هذه البيانات الرائعة

273
00:13:32,078 --> 00:13:36,239
المتاحة لك، وإذا فكرت

274
00:13:33,799 --> 00:13:37,719
في الأشياء التي يمكنك القيام بها في

275
00:13:36,240 --> 00:13:39,198
Access، تعلم، إذا كنت تعمل مع

276
00:13:37,720 --> 00:13:41,440
العناوين وما إلى ذلك، يمكنك أن يكون لديك

277
00:13:39,198 --> 00:13:45,278
كائن صغير في نموذج Access الخاص بك

278
00:13:41,440 --> 00:13:47,160
كان عنصر تحكم متصفح الويب الذي يظهر

279
00:13:45,278 --> 00:13:50,000
خريطة Bing، ويمكنك النقر عليها و

280
00:13:47,159 --> 00:13:53,838
تشغيل متصفح الويب للحصول على الاتجاهات

281
00:13:50,000 --> 00:13:56,320
على سبيل المثال. الشيء الثاني هو نموذج وصول بيانات

282
00:13:53,839 --> 00:14:00,199
قياسي.

283
00:13:56,320 --> 00:14:00,199
يجب على جميع واجهات برمجة تطبيقات الويب أن تتوافق مع

284
00:14:00,440 --> 00:14:06,519
مواصفات REST،

285
00:14:04,559 --> 00:14:09,719
لذا يجب عليها جميعًا أن توفر

286
00:14:06,519 --> 00:14:13,078
نفس النوع من وصول البيانات.

287
00:14:09,720 --> 00:14:15,399
دون الإطالة في هذه النقطة،

288
00:14:13,078 --> 00:14:18,000
ولكن مرة أخرى، إذا عدت إلى هنا وذهبت إلى

289
00:14:15,399 --> 00:14:20,799
API/products فقط، فهذه كل منتجاتي.

290
00:14:18,000 --> 00:14:23,240
الوصول القياسي للوصول إلى منتج معين

291
00:14:20,799 --> 00:14:25,919
سيكون بتمرير

292
00:14:23,240 --> 00:14:30,320
الـ ID. لذا إذا وضعت أربعة، يجب أن

293
00:14:25,919 --> 00:14:33,159
أحصل على موز. حصلت على موز.

294
00:14:30,320 --> 00:14:36,680
هذا الوصول القائم على URL موحد

295
00:14:33,159 --> 00:14:38,639
عبر جميع واجهات برمجة التطبيقات، لذا ما عليك سوى

296
00:14:36,679 --> 00:14:43,319
القلق

297
00:14:38,639 --> 00:14:45,120
بشأن طريقة واحدة للتحدث إلى البيانات للحصول

298
00:14:43,320 --> 00:14:48,519
على بياناتك. لا تحتاج إلى معرفة

299
00:14:45,120 --> 00:14:51,039
TSQL و Access و

300
00:14:48,519 --> 00:14:53,919
أيا كانت اللغة التي يستخدمها Power

301
00:14:51,039 --> 00:14:53,919
Apps للاستعلام.

302
00:14:55,278 --> 00:15:01,958
إنه نموذج وصول واحد.

303
00:14:59,639 --> 00:15:04,159
والميزة الثالثة من منظور الاستهلاك

304
00:15:01,958 --> 00:15:06,838
هي أن هناك مكتبات مساعدة

305
00:15:04,159 --> 00:15:09,039
لأي منصة تقريبًا.

306
00:15:06,839 --> 00:15:11,519
إذا كنت تكتب تطبيقًا لـ Access،

307
00:15:09,039 --> 00:15:14,159
فهناك مكتبة متاحة

308
00:15:11,519 --> 00:15:18,240
لك لتبسيط استخدام واجهات برمجة تطبيقات الويب بشكل كبير.

309
00:15:14,159 --> 00:15:19,759
نفس الشيء في .net، نفس الشيء في Java،

310
00:15:18,240 --> 00:15:22,039
نفس الشيء في

311
00:15:19,759 --> 00:15:24,039
Windows. هناك هذه المكتبات

312
00:15:22,039 --> 00:15:26,120
المتاحة. هذه هي نوعًا ما

313
00:15:24,039 --> 00:15:27,639
المزايا التي لديك مع واجهات برمجة تطبيقات الويب.

314
00:15:26,120 --> 00:15:29,839
تحصل على بيانات من أي مكان، هناك

315
00:15:27,639 --> 00:15:31,399
الآلاف من مصادر البيانات. بمجرد أن تتعلم

316
00:15:29,839 --> 00:15:33,639
كيفية القيام بذلك مرة واحدة، تعرف كيفية القيام بذلك

317
00:15:31,399 --> 00:15:35,399
في كل مكان، وهناك مكتبات

318
00:15:33,639 --> 00:15:39,318
لأي منصة قد تعمل عليها.

319
00:15:35,399 --> 00:15:41,958
الشيء الثاني هو لإنتاج أو

320
00:15:39,318 --> 00:15:45,278
توليد أو حفظ

321
00:15:41,958 --> 00:15:48,758
البيانات. في هذه الحالة، أنت

322
00:15:45,278 --> 00:15:51,240
تنشئ واجهة برمجة تطبيقات ويب تريد من الناس

323
00:15:48,759 --> 00:15:53,600
التفاعل معها. في الحالة الأولى،

324
00:15:51,240 --> 00:15:56,198
نحن فقط نستهلك API عامة.

325
00:15:53,600 --> 00:15:59,519
وفي الحالة الثانية، نحن في الواقع

326
00:15:56,198 --> 00:16:01,758
نولد واجهة برمجة تطبيقات ويب. فما هي مزايا

327
00:15:59,519 --> 00:16:03,759
ذلك؟ أولاً، إنها أكثر أمانًا لأن

328
00:16:01,759 --> 00:16:07,278
بيانات اعتماد قاعدة بياناتك تكون فقط

329
00:16:03,759 --> 00:16:10,800
خلف الـ API. ماذا أعني بذلك؟

330
00:16:07,278 --> 00:16:13,039
إذا كنت تصل إلى قاعدة بيانات،

331
00:16:10,799 --> 00:16:16,799
فأنت بحاجة إلى

332
00:16:13,039 --> 00:16:18,599
توفير بيانات اعتماد للوصول إليها.

333
00:16:16,799 --> 00:16:21,639
وبالطبع هذه مشكلة،

334
00:16:18,600 --> 00:16:25,800
على سبيل المثال، إذا كنت تستخدم Access

335
00:16:21,639 --> 00:16:28,919
مع واجهة خلفية SQL Server، يجب على Access

336
00:16:25,799 --> 00:16:30,919
أن يكون لديه بيانات الاعتماد المناسبة

337
00:16:28,919 --> 00:16:33,360
ليتمكن من الوصول إلى قاعدة بيانات SQL تلك في

338
00:16:30,919 --> 00:16:35,599
الواجهة الخلفية. يمكنك تخزينها

339
00:16:33,360 --> 00:16:37,560
في جدول، يمكنك محاولة تشفيرها

340
00:16:35,600 --> 00:16:41,120
بطريقة ما، يمكنك جعل المستخدم يضطر إلى

341
00:16:37,559 --> 00:16:45,000
إدخالها، ولكن بيانات الاعتماد إلى

342
00:16:41,120 --> 00:16:46,839
قاعدة البيانات نفسها يجب توفيرها.

343
00:16:45,000 --> 00:16:50,600
في حالة واجهة برمجة تطبيقات الويب،

344
00:16:46,839 --> 00:16:54,199
تقع واجهة برمجة تطبيقات الويب بين

345
00:16:50,600 --> 00:16:56,040
التطبيق المستهلك وقاعدة البيانات.

346
00:16:54,198 --> 00:17:01,479
لذا لا يتم كشف بيانات اعتماد قاعدة البيانات

347
00:16:56,039 --> 00:17:01,480
بشكل عام، لديك فقط واجهة الويب.

348
00:17:01,559 --> 00:17:06,879
إنه يوفر الوصول إلى البيانات من أي

349
00:17:04,359 --> 00:17:07,918
عدد من العملاء. بمجرد إنشاء

350
00:17:06,880 --> 00:17:11,400
واجهة برمجة تطبيقات ويب،

351
00:17:07,919 --> 00:17:13,160
يمكن لأي شخص استهلاكها. لذا

352
00:17:11,400 --> 00:17:15,959
لا يجب أن يكونوا مستخدمي Windows،

353
00:17:13,160 --> 00:17:18,079
لا يجب حتى أن يكونوا مستخدمي كمبيوتر.

354
00:17:15,959 --> 00:17:20,919
كل ما عليهم معرفته هو أن

355
00:17:18,078 --> 00:17:24,240
هناك URL يمكنهم الوصول إليه

356
00:17:20,919 --> 00:17:26,199
للوصول إلى البيانات، وهو أمر لطيف. والشيء

357
00:17:24,240 --> 00:17:29,960
الثالث هو أن هناك طبقة وصول بيانات

358
00:17:26,199 --> 00:17:31,759
واحدة فقط لإدارتها.

359
00:17:29,960 --> 00:17:34,919
إذا كان لديك مصدر بيانات، لنقل في

360
00:17:31,759 --> 00:17:37,519
SQL server في السحابة تستخدمه في

361
00:17:34,919 --> 00:17:39,840
تطبيق Access الخاص بك ولكنك تريد أيضًا

362
00:17:37,519 --> 00:17:43,359
جعله متاحًا، لنقل في أماكن أخرى،

363
00:17:39,839 --> 00:17:45,399
مع واجهة برمجة تطبيقات الويب لديك طبقة وصول بيانات واحدة فقط

364
00:17:43,359 --> 00:17:47,359
يجب عليك إدارتها. لن يكون لدينا وقت في

365
00:17:45,400 --> 00:17:49,400
هذا للتعمق في ما يتطلبه

366
00:17:47,359 --> 00:17:51,839
إنشاء واجهة برمجة تطبيقات ويب، لكني أردت

367
00:17:49,400 --> 00:17:55,000
أن أريكم بسرعة الكود في Visual

368
00:17:51,839 --> 00:17:56,678
Studio. الآن هذا هو

369
00:17:55,000 --> 00:18:00,000
C#، لقد أنشأته تلقائيًا في حوالي 10

370
00:17:56,679 --> 00:18:02,880
ثوانٍ من

371
00:18:00,000 --> 00:18:02,880
قاعدة بيانات، ولا أريد الخوض في

372
00:18:04,000 --> 00:18:08,000
أمور Visual Studio، لكن تعلمون،

373
00:18:05,798 --> 00:18:11,759
النقر بزر الماوس الأيمن، إضافة عنصر scaffolded، و

374
00:18:08,000 --> 00:18:13,880
يسألني هل تريد إنشاء واجهة برمجة تطبيقات ويب،

375
00:18:11,759 --> 00:18:15,960
فقلت نعم. قال ما هو جدول الكيان

376
00:18:13,880 --> 00:18:18,640
في قاعدة البيانات، نعم، حسنًا، و

377
00:18:15,960 --> 00:18:20,360
أنشأ هذا. لم ألمس هذا،

378
00:18:18,640 --> 00:18:23,000
هذا كله منشأ تلقائيًا، لكن لاحظوا

379
00:18:20,359 --> 00:18:26,879
أنه في هذه الحالة لدينا Get، لاحظوا

380
00:18:23,000 --> 00:18:30,279
أن هناك ذلك URL API/proc/x/5.

381
00:18:26,880 --> 00:18:34,840
هذا هو get product ويأخذ ID.

382
00:18:30,279 --> 00:18:37,158
حسنًا، ثم تحت الأغطية نذهب

383
00:18:34,839 --> 00:18:39,439
product product = database.products.

384
00:18:37,159 --> 00:18:43,280
find، هذه لغة خاصة بـ .net هنا،

385
00:18:39,440 --> 00:18:46,600
لكن الفكرة هي أن لدي

386
00:18:43,279 --> 00:18:48,440
هذه الواجهة الواحدة هنا. لذا

387
00:18:46,599 --> 00:18:51,240
يمكن لأي شخص أن يأتي إلى هذا URL و

388
00:18:48,440 --> 00:18:54,080
تحت الأغطية أنا أفعل

389
00:18:51,240 --> 00:18:57,159
هذا. يريد جون أن يعرف ما إذا كان المعيار الصناعي

390
00:18:54,079 --> 00:19:00,000
للعنصر الأول هو دائمًا

391
00:18:57,159 --> 00:19:03,280
ID. تعلم، هذا سؤال جيد جون.

392
00:19:00,000 --> 00:19:07,798
أعتقد ذلك، ولكن أيا كان المفتاح،

393
00:19:03,279 --> 00:19:11,200
إذا كان ذلك منطقيًا. نوعًا ما

394
00:19:07,798 --> 00:19:13,480
مثل قاعدة البيانات، يمكنك أن يكون لديك مفتاحك الأساسي

395
00:19:11,200 --> 00:19:15,880
يسمى ID، وهو ما أحب استخدامه.

396
00:19:13,480 --> 00:19:18,599
بعض الناس يحبون استخدام اسم_الجدول_ID.

397
00:19:15,880 --> 00:19:21,360
هناك اصطلاحات أخرى

398
00:19:18,599 --> 00:19:24,079
يستخدمها الناس، ولكن إذا تم تحديده على أنه

399
00:19:21,359 --> 00:19:28,158
المفتاح، كالمفتاح الأساسي للمجموعة،

400
00:19:24,079 --> 00:19:31,279
فإن آلية المسار نفسها

401
00:19:28,159 --> 00:19:34,480
ستعمل كما كان لدينا هنا،

402
00:19:31,279 --> 00:19:38,399
إذا كان ذلك منطقيًا. إنه المفتاح،

403
00:19:34,480 --> 00:19:42,640
ولكن الشيء الآخر بالطبع هو

404
00:19:38,400 --> 00:19:44,798
أنك تقوم بتجريده من

405
00:19:42,640 --> 00:19:46,320
قاعدة البيانات. لذا، بالمعنى الدقيق للكلمة،

406
00:19:44,798 --> 00:19:48,918
لا أعرف ما إذا كان هذا هو الحال.

407
00:19:46,319 --> 00:19:52,000
في الواقع، تعلم، سننظر

408
00:19:48,919 --> 00:19:55,080
في مصدرين للبيانات ونرى ما إذا كان

409
00:19:52,000 --> 00:19:58,839
هذا هو الحال أم لا. وإذا لم يكن كذلك،

410
00:19:55,079 --> 00:20:01,319
فما تفعله هو أنك

411
00:19:58,839 --> 00:20:04,038
ستطلب في الواقع

412
00:20:01,319 --> 00:20:08,038
شيئًا محددًا، كيف أقول ذلك،

413
00:20:04,038 --> 00:20:10,359
اسم حقل محدد

414
00:20:08,038 --> 00:20:12,839
في استعلامك ويمكنك التصفية

415
00:20:10,359 --> 00:20:15,558
بهذه الطريقة أيضًا، تمامًا كما في

416
00:20:12,839 --> 00:20:18,038
SQL، صحيح؟ أعد كل المنتجات حيث

417
00:20:15,558 --> 00:20:21,119
اسم_المنتج = "موز". لقد رأيت هذا دائمًا

418
00:20:18,038 --> 00:20:23,720
مع ID، إنه بالتأكيد الافتراضي.

419
00:20:21,119 --> 00:20:25,918
لا أعرف ما إذا كان معيارًا مفروضًا أم لا.

420
00:20:23,720 --> 00:20:27,360
هذا يجيب على سؤالي. لقد أجبت بالفعل

421
00:20:25,919 --> 00:20:29,200
على سؤالي التالي في

422
00:20:27,359 --> 00:20:30,678
نفس الوقت، لذا شكرًا جزيلاً لك.

423
00:20:29,200 --> 00:20:32,159
إثنان في واحد. حسنًا، شكرًا لك.

424
00:20:30,679 --> 00:20:34,120
آمل أنني لم أجعل هذا يبدو

425
00:20:32,159 --> 00:20:38,400
فوضى سخيفة من الفواصل المنقوطة والأقواس،

426
00:20:34,119 --> 00:20:41,558
لكن هذا بسيط. أعني أن لدي

427
00:20:38,400 --> 00:20:44,280
بشكل أساسي 100 سطر من الكود المنشأ تلقائيًا

428
00:20:41,558 --> 00:20:49,079
تدير إنشاء منتج،

429
00:20:44,279 --> 00:20:52,119
حذف منتج، تعديل منتج، و

430
00:20:49,079 --> 00:20:55,000
قراءة منتج.

431
00:20:52,119 --> 00:20:58,759
هذه هي واجهتي وأي شخص

432
00:20:55,000 --> 00:21:01,599
لديه متصفح ويب أو وصول إلى الإنترنت،

433
00:20:58,759 --> 00:21:04,279
أي تطبيق في أي مكان يمكنه الآن،

434
00:21:01,599 --> 00:21:04,279
بافتراض أنني أمنحه الوصول إليه،

435
00:21:04,839 --> 00:21:10,278
أن يصل إلى البيانات ولدي طبقة بيانات واحدة فقط

436
00:21:08,038 --> 00:21:14,079
لإدارتها.

437
00:21:10,278 --> 00:21:17,359
لذا دعونا نلقي نظرة على استدعاءات واجهة برمجة تطبيقات الويب

438
00:21:14,079 --> 00:21:19,399
وما تبدو عليه في VBA.

439
00:21:17,359 --> 00:21:20,959
تتكون واجهة برمجة تطبيقات الويب، ذلك URL، من

440
00:21:19,400 --> 00:21:24,840
طلب، URL أساسي

441
00:21:20,960 --> 00:21:29,278
حيث تعلمون، أي خادم، أي مضيف،

442
00:21:24,839 --> 00:21:34,879
مسار، وهو، كما تعلمون،

443
00:21:29,278 --> 00:21:37,319
المسار للوصول إلى

444
00:21:34,880 --> 00:21:40,400
الـ API، ثم هذه المعلمات الاستعلامية الاختيارية

445
00:21:37,319 --> 00:21:44,200
للسلسلة.

446
00:21:40,400 --> 00:21:45,559
وجون، لقد ذكرت لك

447
00:21:44,200 --> 00:21:49,038
أنه يمكنك الاستعلام بناءً على اسم حقل،

448
00:21:45,558 --> 00:21:51,480
على سبيل المثال، حيث اسم_المنتج = "موز"،

449
00:21:49,038 --> 00:21:51,480
وهذا هو المكان الذي تستخدم فيه سلاسل الاستعلام.

450
00:21:51,798 --> 00:21:57,240
سلسلة الاستعلام هي ببساطة، لقد رأيناها جميعًا

451
00:21:54,558 --> 00:21:59,038
في متصفح الويب، تعلمون،

452
00:21:57,240 --> 00:22:01,120
URL؟firstname=

453
00:21:59,038 --> 00:22:03,480
George&lastname=Young.

454
00:22:01,119 --> 00:22:04,918
أو تقوم بطلب بحث في Bing أو

455
00:22:03,480 --> 00:22:08,400
Google ويقول Q= وأياً كان ما كتبته،

456
00:22:04,919 --> 00:22:11,720
هذه هي سلسلة الاستعلام.

457
00:22:08,400 --> 00:22:14,880
هذا هو URL، ثم

458
00:22:11,720 --> 00:22:16,960
هناك رؤوس، تمامًا كما في HTML، رؤوس HTTP،

459
00:22:14,880 --> 00:22:20,760
التي توفر معلومات

460
00:22:16,960 --> 00:22:23,880
حول نوع الطريقة التي يتم

461
00:22:20,759 --> 00:22:28,158
إرسالها للوصول إلى البيانات،

462
00:22:23,880 --> 00:22:31,240
ما هو تنسيق البيانات المطلوب

463
00:22:28,159 --> 00:22:35,240
إرجاعها به، ثم الشيء الثالث هو الجسم، إذا

464
00:22:31,240 --> 00:22:38,400
كنت ستضيف أو تعدل بيانات،

465
00:22:35,240 --> 00:22:40,240
فأنت بحاجة إلى توفير ذلك في

466
00:22:38,400 --> 00:22:43,320
الجسم. هذا هو الطلب.

467
00:22:40,240 --> 00:22:44,720
يذهب الطلب وتأتي استجابة

468
00:22:43,319 --> 00:22:48,119
من الخادم،

469
00:22:44,720 --> 00:22:50,558
وتمرر رمز حالة ونص حالة،

470
00:22:48,119 --> 00:22:52,798
وتوفر كل المحتوى

471
00:22:50,558 --> 00:22:55,399
في المقابل. إذا نظرنا إلى الكود على

472
00:22:52,798 --> 00:22:57,839
اليمين هنا، والذي يقابل هذه

473
00:22:55,400 --> 00:22:59,159
الأشياء، هذا هو VBA الذي سننظر

474
00:22:57,839 --> 00:23:02,199
إليه بعد قليل. يمكنكم رؤية

475
00:22:59,159 --> 00:23:04,360
أن لدي دالة تسمى get product

476
00:23:02,200 --> 00:23:06,200
list from web API.

477
00:23:04,359 --> 00:23:08,678
أول شيء أفعله هو أنني

478
00:23:06,200 --> 00:23:10,679
أعرف عميل ويب.

479
00:23:08,679 --> 00:23:12,519
أعطيه URL أساسي وهو

480
00:23:10,679 --> 00:23:14,840
الخادم. هذا سيكون، كما تعلمون،

481
00:23:12,519 --> 00:23:16,359
www.ac lunch time.com،

482
00:23:14,839 --> 00:23:17,959
www.microsoft.com، google.com،

483
00:23:16,359 --> 00:23:20,719
أيا كان. العميل يحصل على URL الأساسي،

484
00:23:17,960 --> 00:23:22,840
API لذا أول شيء أفعله هو أنني

485
00:23:20,720 --> 00:23:27,038
أقوم بتعريف عميل ويب

486
00:23:22,839 --> 00:23:29,558
أعطيه عنوان URL أساسي وهو

487
00:23:27,038 --> 00:23:33,319
الخادم، لذلك قد يكون هذا كما تعلمون

488
00:23:29,558 --> 00:23:37,599
www.ac lunch time.com

489
00:23:33,319 --> 00:23:37,599
www.microsoft.com google.com

490
00:23:37,759 --> 00:23:42,919
أياً كان، يحصل العميل على عنوان URL الأساسي

491
00:23:40,839 --> 00:23:44,240
ثم لدي طلب ويب، وهذا هو

492
00:23:42,919 --> 00:23:46,759
الكائن الثاني لدي

493
00:23:44,240 --> 00:23:49,079
طلب الويب هو ما يتم إرساله فعليًا

494
00:23:46,759 --> 00:23:52,119
وأعطيه المسار

495
00:23:49,079 --> 00:23:55,240
الذي أريد الذهاب إليه، وأخبره إذا كان

496
00:23:52,119 --> 00:23:57,678
طلب 'get' أو 'put' أو 'post' أو

497
00:23:55,240 --> 00:23:59,120
'delete' ثم أحدد الصيغة التي أريدها

498
00:23:57,679 --> 00:23:59,880
للبيانات المُسترجعة، والمعيار مرة أخرى

499
00:23:59,119 --> 00:24:02,199
هو

500
00:23:59,880 --> 00:24:05,840
Json ثم الشيء الثالث الذي أفعله هو

501
00:24:02,200 --> 00:24:08,679
الاستجابة، وفي هذه الحالة أقوم فقط بتعريفها

502
00:24:05,839 --> 00:24:11,278
وأقول إن الاستجابة هي تنفيذ

503
00:24:08,679 --> 00:24:12,640
للعميل مع تمرير طلب الويب

504
00:24:11,278 --> 00:24:16,200
له

505
00:24:12,640 --> 00:24:21,559
بيانات وأعود وأحصل على رمز حالة

506
00:24:16,200 --> 00:24:21,558
ثم أحصل على بيانات استجابة الويب

507
00:24:22,119 --> 00:24:26,158
وهذا ما تبدو عليه

508
00:24:24,079 --> 00:24:27,960
بشكل عام، لديك

509
00:24:26,159 --> 00:24:29,440
العميل الخاص بك، الكائن الذي

510
00:24:27,960 --> 00:24:31,960
يتعامل مع

511
00:24:29,440 --> 00:24:34,919
تمرير البيانات ذهابًا وإيابًا، طلب الويب

512
00:24:31,960 --> 00:24:37,960
يرسل البيانات واستجابة الويب

513
00:24:34,919 --> 00:24:40,038
هي ما يعود، واستجابة الويب

514
00:24:37,960 --> 00:24:43,120
هي مجرد تنفيذ لعميل الويب

515
00:24:40,038 --> 00:24:43,119
مع تمرير

516
00:24:43,558 --> 00:24:49,918
مكتبات الطلب. أريد أن أعود

517
00:24:47,119 --> 00:24:52,678
إلى Access، هل هناك أي أسئلة حتى الآن

518
00:24:49,919 --> 00:24:56,360
قبل أن ندخل في كود Access؟

519
00:24:52,679 --> 00:24:59,159
سألت بريستول بشكل مناسب عن نوع

520
00:24:56,359 --> 00:25:00,918
المكتبة المستخدمة لـ Json، فأخبرتها

521
00:24:59,159 --> 00:25:02,720
أنك ستجيب على ذلك

522
00:25:00,919 --> 00:25:04,960
بعد قليل. أعتقد أننا على وشك أن نسمع

523
00:25:02,720 --> 00:25:06,480
بعضًا من ذلك. نعم، نحن على وشك سماعه.

524
00:25:04,960 --> 00:25:10,679
وسأنتقل إلى هنا، وهناك مكتبة

525
00:25:06,480 --> 00:25:12,120
مساعدة لـ VBA تسمى vb- Web، حسنًا؟

526
00:25:10,679 --> 00:25:16,080
وسنعود إلى هذه الشريحة

527
00:25:12,119 --> 00:25:18,558
بعد قليل. أريد أن أعرض هذا.

528
00:25:16,079 --> 00:25:19,439
تتذكرون أن لدينا هنا نموذجًا

529
00:25:18,558 --> 00:25:23,759
و

530
00:25:19,440 --> 00:25:26,640
النموذج يقرأ المدن من جدول خطوط الطول والعرض للمدن

531
00:25:23,759 --> 00:25:29,398
ثم عندما تختار مدينة

532
00:25:26,640 --> 00:25:31,000
لذلك أفترض أنها أكثر دفئًا قليلاً حتى

533
00:25:29,398 --> 00:25:34,519
بالبريد الإلكتروني

534
00:25:31,000 --> 00:25:38,839
نعم، أنقر على المدينة ويذهب إلى

535
00:25:34,519 --> 00:25:41,278
خدمة ويب ويحصل على البيانات التي

536
00:25:38,839 --> 00:25:44,158
طلبتها. لذلك دعونا ندخل إلى

537
00:25:41,278 --> 00:25:49,159
VBA في Access ونلقي نظرة على شكل ذلك.

538
00:25:44,159 --> 00:25:51,799
ولنذهب إلى نموذج الطقس للمدينة.

539
00:25:49,159 --> 00:25:53,399
حسنًا، لن أخوض

540
00:25:51,798 --> 00:25:57,200
في هذا بتفصيل

541
00:25:53,398 --> 00:25:59,519
كبير، ولكن مرة أخرى إذا قمتم بتنزيل

542
00:25:57,200 --> 00:26:02,880
الكود التجريبي الذي أتحته

543
00:25:59,519 --> 00:26:05,319
من العرض التقديمي.

544
00:26:02,880 --> 00:26:07,480
ولكن هذا هو الكود البرمجي للنموذج.

545
00:26:05,319 --> 00:26:09,639
كما ترون، لدي إجراء واحد فقط.

546
00:26:07,480 --> 00:26:12,880
أتعامل مع حدث النقر على زر الحصول على الطقس.

547
00:26:09,640 --> 00:26:15,679
لذا هناك بضعة فحوصات للأخطاء و

548
00:26:12,880 --> 00:26:19,080
ما إلى ذلك، وحالة بسيطة تشير إلى جلب

549
00:26:15,679 --> 00:26:20,278
الطقس، ثم أقوم بتعريف كائن

550
00:26:19,079 --> 00:26:24,158
DAO

551
00:26:20,278 --> 00:26:26,880
لقاعدة البيانات وأحصل على خط العرض

552
00:26:24,159 --> 00:26:30,480
وخط الطول من الجدول حيث يكون المعرّف

553
00:26:26,880 --> 00:26:34,080
مساويًا للذي نقرت عليه، صحيح؟

554
00:26:30,480 --> 00:26:36,319
ثم أفتح مجموعة السجلات لذلك.

555
00:26:34,079 --> 00:26:40,960
لذا لدي

556
00:26:36,319 --> 00:26:44,278
العنصر. ثم أقول إن النتيجة هي

557
00:26:40,960 --> 00:26:46,798
كائن Dictionary. أعلم أنني عندما قدمت هذا الحديث

558
00:26:44,278 --> 00:26:49,278
لمجموعة مستخدمي Access في دنفر، كان

559
00:26:46,798 --> 00:26:51,158
كائن Dictionary مفهومًا غير مألوف نوعًا ما.

560
00:26:49,278 --> 00:26:53,159
إنه جزء من مكتبة Microsoft

561
00:26:51,159 --> 00:26:56,679
Scripting. وهو في الأساس نوع من

562
00:26:53,159 --> 00:26:56,679
أزواج الاسم والقيمة.

563
00:26:56,839 --> 00:27:01,000
مجموعة، و... لا أريد أن أخوض

564
00:26:59,440 --> 00:27:03,558
كثيرًا في ذلك، لكنها مجرد

565
00:27:01,000 --> 00:27:06,558
مجموعة أخرى من البيانات تمامًا مثل

566
00:27:03,558 --> 00:27:08,798
المصفوفة أو القائمة أو ما إلى ذلك، لكنها

567
00:27:06,558 --> 00:27:11,398
تستخدم أزواج الاسم والقيمة.

568
00:27:08,798 --> 00:27:16,558
ثم أستدعي دالة الحصول على الطقس من

569
00:27:11,398 --> 00:27:18,479
الـ API للنتيجة، حسنًا؟ وعندما أريد

570
00:27:16,558 --> 00:27:20,319
تعبئة تلك

571
00:27:18,480 --> 00:27:24,079
الحقول، أنا ببساطة

572
00:27:20,319 --> 00:27:25,439
أقول إن قيمة مربع نص درجة الحرارة

573
00:27:24,079 --> 00:27:27,720
تساوي

574
00:27:25,440 --> 00:27:30,038
نتيجة الطقس الحالي لدرجة الحرارة.

575
00:27:27,720 --> 00:27:32,759
وهنا يأتي دور كائن Dictionary. فالطقس

576
00:27:30,038 --> 00:27:36,240
الحالي هو كائن، ودرجة الحرارة

577
00:27:32,759 --> 00:27:39,038
هي كائن تابع له. قيمة سرعة

578
00:27:36,240 --> 00:27:41,079
الرياح، الطقس الحالي، سرعة الرياح.

579
00:27:39,038 --> 00:27:43,679
نص اتجاه الرياح، الطقس الحالي،

580
00:27:41,079 --> 00:27:45,558
اتجاه الرياح. ثم أضبط الحالة

581
00:27:43,679 --> 00:27:47,120
على "تم". لذا إذا عدت إلى ذلك

582
00:27:45,558 --> 00:27:49,639
النموذج بسرعة لتشغيله مرة أخرى.

583
00:27:47,119 --> 00:27:52,000
لنذهب إلى "أليس سبرينغز" التي أعتقد

584
00:27:49,640 --> 00:27:55,200
أنها ستكون أكثر دفئًا أيضًا، على الرغم من أن

585
00:27:52,000 --> 00:27:56,440
الوقت صيف في أستراليا على ما أعتقد. 74،

586
00:27:55,200 --> 00:27:58,679
أعتقد أنها ربما منتصف الليل أو

587
00:27:56,440 --> 00:28:00,960
شيء من هذا القبيل هناك، لكن

588
00:27:58,679 --> 00:28:04,720
ما يحدث مرة أخرى هو أن كل ما

589
00:28:00,960 --> 00:28:07,440
رأيتموه هناك، كل هذا هو من Access

590
00:28:04,720 --> 00:28:10,759
باستثناء هذا الجزء، وهو حيث

591
00:28:07,440 --> 00:28:14,159
أستدعي دالة جلب الطقس من الـ API. فلنذهب

592
00:28:10,759 --> 00:28:17,158
ونلقي نظرة على شكل هذا الـ API

593
00:28:14,159 --> 00:28:20,039
من الداخل. هل هناك أي

594
00:28:17,159 --> 00:28:22,360
أسئلة حتى الآن؟ نعم، هناك سؤالان.

595
00:28:20,038 --> 00:28:24,960
فيل يريد أن يعرف ما إذا كان

596
00:28:22,359 --> 00:28:26,678
هناك ميزة لاستخدام DAO بدلاً

597
00:28:24,960 --> 00:28:29,200
من

598
00:28:26,679 --> 00:28:32,679
ADO. ليس على حد علمي. أعني، أناس مختلفون

599
00:28:29,200 --> 00:28:35,120
لديهم تفضيلاتهم. نعم، نعم.

600
00:28:32,679 --> 00:28:38,320
ثم سيندي تريد أن تعرف ما إذا كان

بالتأكيد، إليك تكملة الترجمة بنفس التنسيق:

601
00:28:35,119 --> 00:28:39,918
متغيرات الـ dictionary والوصول إليها

602
00:28:38,319 --> 00:28:41,839
هل هي حساسة

603
00:28:39,919 --> 00:28:44,759
لحالة الأحرف مثل

604
00:28:41,839 --> 00:28:47,839
المتغيرات؟ نعم صحيح، هل هي مثل VB أو

605
00:28:44,759 --> 00:28:51,759
#C؟ هذا سؤال جيد، يمكننا محاولة

606
00:28:47,839 --> 00:28:54,639
اختباره. لا أعرف، سألتزم

607
00:28:51,759 --> 00:28:56,519
بافتراض أنها كذلك، هذه فكرتي فقط

608
00:28:54,640 --> 00:28:59,200
بناءً على ما أعرفه عن هذه الأنواع من الأشياء.

609
00:28:56,519 --> 00:29:01,599
لكنني لا أعرف حقًا. وكريستال تريد

610
00:28:59,200 --> 00:29:05,600
أن تعرف إذا كان الـ dictionary

611
00:29:01,599 --> 00:29:07,918
ذا مستوى واحد فقط. لا، يمكن أن يكون متداخلاً. نعم، يمكنك

612
00:29:05,599 --> 00:29:12,038
أن تضع مجموعة داخل

613
00:29:07,919 --> 00:29:15,600
dictionary. نعم. دعني أرى إذا كان

614
00:29:12,038 --> 00:29:17,679
لدي مثال على ذلك...

615
00:29:15,599 --> 00:29:19,119
ليس لدي، اعتقدت أن لدي مثالاً على ذلك

616
00:29:17,679 --> 00:29:21,080
هناك. آسف يا رفاق، سأنتقل

617
00:29:19,119 --> 00:29:24,479
بسرعة.

618
00:29:21,079 --> 00:29:26,359
لا... أوه، أعرف أين هو. إنه في ملف

619
00:29:24,480 --> 00:29:29,440
منفصل.

620
00:29:26,359 --> 00:29:33,479
دعني أفتحه هنا، بافتراض أنني

621
00:29:29,440 --> 00:29:33,480
ما زلت أملك... ها نحن ذا.

622
00:29:33,960 --> 00:29:40,000
أه، ها نحن ذا.

623
00:29:36,599 --> 00:29:41,278
للإجابة على ذلك، لدينا كائن

624
00:29:40,000 --> 00:29:44,159
على المستوى الأعلى.

625
00:29:41,278 --> 00:29:47,079
ثم لاحظوا أن لدي

626
00:29:44,159 --> 00:29:50,159
خط العرض وهو رقم، وخط الطول

627
00:29:47,079 --> 00:29:51,639
وهو رقم، ورقم الجيل، ورقم الإزاحة،

628
00:29:50,159 --> 00:29:55,120
والمنطقة الزمنية

629
00:29:51,640 --> 00:29:58,679
وهي نص، واختصار المنطقة الزمنية وهو نص،

630
00:29:55,119 --> 00:30:00,678
والارتفاع. الآن، الطقس الحالي، لاحظوا

631
00:29:58,679 --> 00:30:04,559
أنه يحتوي على

632
00:30:00,679 --> 00:30:07,320
هذا القوس المتعرج. لذا يا كريستال، هذا

633
00:30:04,558 --> 00:30:09,918
كائن متداخل إن صح التعبير. لذا هو

634
00:30:07,319 --> 00:30:12,599
يشبه XML قليلاً من هذه الناحية... لأولئك

635
00:30:09,919 --> 00:30:15,559
منكم الذين عملوا مع XML على الإطلاق أو

636
00:30:12,599 --> 00:30:19,199
على دراية به، إنها كائنات متداخلة.

637
00:30:15,558 --> 00:30:22,158
لذا نعم، آمل أن يجيب ذلك على السؤال.

638
00:30:19,200 --> 00:30:26,798
سؤالان مرتبطان هنا من بن.

639
00:30:22,159 --> 00:30:28,720
هل يمكنك تحميل Json مباشرة إلى

640
00:30:26,798 --> 00:30:30,440
dictionary؟

641
00:30:28,720 --> 00:30:34,159
امم...

642
00:30:30,440 --> 00:30:36,558
مباشرة...

643
00:30:34,159 --> 00:30:38,320
امم... على سبيل المثال، إذا كان لديك فقط

644
00:30:36,558 --> 00:30:42,000
ملف JavaScript

645
00:30:38,319 --> 00:30:45,678
واستخدمت مكتبة Microsoft Scripting،

646
00:30:42,000 --> 00:30:47,798
فقد تتمكن من ذلك. دعني

647
00:30:45,679 --> 00:30:51,600
أجيب على هذا السؤال.

648
00:30:47,798 --> 00:30:53,839
إذًا، هذا هنا هو الحمولة (payload)، إنها

649
00:30:51,599 --> 00:30:56,759
البيانات التي تعود من طلب الويب الخاص بنا.

650
00:30:53,839 --> 00:30:59,199
وهي مجرد بيانات، هذا كل شيء.

651
00:30:56,759 --> 00:31:01,919
إنها مجرد بيانات وهي بصيغة

652
00:30:59,200 --> 00:31:04,759
ترميز كائن JavaScript هذه.

653
00:31:01,919 --> 00:31:07,600
Json. إنها JavaScript، تشبه لغة C إلى حد كبير،

654
00:31:04,759 --> 00:31:10,558
بها أقواس متعرجة وكل ذلك.

655
00:31:07,599 --> 00:31:14,278
لست مضطرًا للذهاب إلى

656
00:31:10,558 --> 00:31:17,720
Web API. على سبيل المثال، في Visual

657
00:31:14,278 --> 00:31:20,319
Studio، ملفات تكوين المطورين

658
00:31:17,720 --> 00:31:23,880
كانت في السابق بصيغة XML والآن هي

659
00:31:20,319 --> 00:31:25,918
بصيغة Json. لذا فهي تعمل من ملفات محلية.

660
00:31:23,880 --> 00:31:27,960
لذا يمكنك تحميل، يمكنك أخذ هذا

661
00:31:25,919 --> 00:31:30,960
الملف المحلي الذي حفظته هنا

662
00:31:27,960 --> 00:31:33,440
weather-api.json.txt ويمكنك فقط

663
00:31:30,960 --> 00:31:37,399
تحميله في شيء ما. لم أفعل

664
00:31:33,440 --> 00:31:39,639
ذلك، وقد يكون من الممكن أن VBA Json

665
00:31:37,398 --> 00:31:41,638
يسمح لك بالقيام بذلك بدون

666
00:31:39,638 --> 00:31:44,719
الوصول إلى web API بعيد.

667
00:31:41,638 --> 00:31:47,439
لذا أعتقد أن الأمر يعتمد على ما

668
00:31:44,720 --> 00:31:51,639
تعنيه كلمة "تلقائيًا"، ولكن نعم نحن

669
00:31:47,440 --> 00:31:53,720
نقوم بتحميلها باستخدام مكتبة VBA Web إلى

670
00:31:51,638 --> 00:31:55,079
dictionary، لكني لست متأكدًا من أنني أجبت

671
00:31:53,720 --> 00:31:58,480
على سؤالك. من فضلك أخبرني إذا لم أفعل.

672
00:31:55,079 --> 00:32:01,558
سؤال آخر ذو صلة.

673
00:31:58,480 --> 00:32:04,960
يسأل ريتشارد عما إذا كانت هناك طريقة لرؤية

674
00:32:01,558 --> 00:32:07,240
بنية Json الواردة أو

675
00:32:04,960 --> 00:32:09,519
كيف سيتم تنسيق الـ dictionary. أوه،

676
00:32:07,240 --> 00:32:11,839
لقد قلت أن هذا قد تمت الإجابة عليه للتو.

677
00:32:09,519 --> 00:32:14,519
حسنًا، لقد أجبت على ذلك بما هو على

678
00:32:11,839 --> 00:32:16,959
الشاشة هناك. شكرًا لك. نعم، نعم.

679
00:32:14,519 --> 00:32:19,240
نعم، وهذا في الواقع جيد جدًا.

680
00:32:16,960 --> 00:32:21,319
أعني، كما تعلمون، لأولئك منا

681
00:32:19,240 --> 00:32:22,919
الذين هم أشخاص بصريون مثلي،

682
00:32:21,319 --> 00:32:28,678
لا يمكنني فهم شيء ما لم أتمكن

683
00:32:22,919 --> 00:32:29,880
من النظر إليه. لذا إذا ذهبت إلى هنا، يمكنني

684
00:32:28,679 --> 00:32:33,360
النظر.

685
00:32:29,880 --> 00:32:35,080
يمكنني نوعًا ما رؤية البنية مرة أخرى.

686
00:32:33,359 --> 00:32:38,000
كنت أملك القدرة على طباعتها بشكل منسق

687
00:32:35,079 --> 00:32:41,798
بحيث تبدو

688
00:32:38,000 --> 00:32:44,480
هكذا. لا أعرف ماذا حدث.

689
00:32:41,798 --> 00:32:48,200
اضطررت إلى مسح جهاز الكمبيوتر الخاص بي، لذلك ربما

690
00:32:44,480 --> 00:32:52,000
فقدت إضافة أو شيئًا من هذا القبيل. لذا يمكنك

691
00:32:48,200 --> 00:32:55,558
تصورها بهذه الطريقة وسأريكم

692
00:32:52,000 --> 00:32:58,638
بسرعة أداة يمكنك

693
00:32:55,558 --> 00:33:00,278
استخدامها للتجربة مع web API

694
00:32:58,638 --> 00:33:01,599
خارج Access أو أيًا كانت بيئة

695
00:33:00,278 --> 00:33:03,398
التطوير الخاصة بك والتي تسمح لك

696
00:33:01,599 --> 00:33:04,439
بالتصور والتجربة.

697
00:33:03,398 --> 00:33:07,119
مع

698
00:33:04,440 --> 00:33:10,880
الأشياء. نعم، لكن أسهل شيء هو

699
00:33:07,119 --> 00:33:13,638
أن تضعه فقط في المتصفح.

700
00:33:10,880 --> 00:33:16,240
ضع عنوان URL في متصفحك و

701
00:33:13,638 --> 00:33:17,638
سيظهر، وإذا كنت أذكى

702
00:33:16,240 --> 00:33:19,599
مني، وأنا متأكد من أنك كذلك،

703
00:33:17,638 --> 00:33:21,038
ستتمكن بالفعل من طباعة هذا بنوع من

704
00:33:19,599 --> 00:33:23,439
التنسيق المتتالي.

705
00:33:21,038 --> 00:33:24,798
في الواقع هناك عدة أسئلة أخرى.

706
00:33:23,440 --> 00:33:28,360
أسئلة.

707
00:33:24,798 --> 00:33:32,519
جورج، أتساءل فقط كيف يمكن لـ dictionary

708
00:33:28,359 --> 00:33:34,959
الوصول إلى تلك الأشياء المتداخلة

709
00:33:32,519 --> 00:33:39,200
وكيف يمكنك قراءة الأشياء المتداخلة

710
00:33:34,960 --> 00:33:42,278
في كائن dictionary.

711
00:33:39,200 --> 00:33:45,840
ربما قمت بتغطية ذلك في

712
00:33:42,278 --> 00:33:49,000
عرضك التقديمي السابق، ولكن إذا لم تفعل،

713
00:33:45,839 --> 00:33:52,199
سأذهب لمشاهدته، ولكن إذا لم تفعل

714
00:33:49,000 --> 00:33:54,440
فهذا هو السؤال. لم أفعل، لذا دعني

715
00:33:52,200 --> 00:33:56,840
أفعل هذا بسرعة. لنلقِ نظرة فعلية على

716
00:33:54,440 --> 00:34:00,639
كود جلب الطقس من الـ API وبعد ذلك

717
00:33:56,839 --> 00:34:00,638
نأمل أن يوضح ذلك الأمر.

718
00:34:01,000 --> 00:34:08,039
إنه سؤال رائع. لذا مرة أخرى،

719
00:34:04,398 --> 00:34:10,679
أين نحن؟ نقرنا على "أليس سبرينغز"

720
00:34:08,039 --> 00:34:14,000
نقرنا على "الحصول على الطقس" وهذه

721
00:34:10,679 --> 00:34:15,039
البيانات ظهرت وتحدثنا عن كيف

722
00:34:14,000 --> 00:34:17,838
كان لدينا

723
00:34:15,039 --> 00:34:20,440
هذا

724
00:34:17,838 --> 00:34:23,119
معالج حدث النقر لطقس المدينة

725
00:34:20,440 --> 00:34:25,679
لزر، وهو ينظر فقط إلى البيانات

726
00:34:23,119 --> 00:34:29,240
في النموذج، ويحصل على قاعدة بيانات ثم

727
00:34:25,679 --> 00:34:31,119
يستدعي هذه الدالة لضبط النتيجة. لذا نحن

728
00:34:29,239 --> 00:34:32,959
سنذهب إلى دالة جلب الطقس من الـ API و

729
00:34:31,119 --> 00:34:35,480
نلقي نظرة سريعة عليها.

730
00:34:32,960 --> 00:34:37,320
إذن ها هي دالة جلب الطقس من الـ API.

731
00:34:35,480 --> 00:34:40,079
لاحظوا أننا نمرر خط العرض و

732
00:34:37,320 --> 00:34:43,280
خط الطول. هذا ما حصلنا عليه من

733
00:34:40,079 --> 00:34:45,639
جدول Access المحلي الخاص بنا. أريد فقط التأكد

734
00:34:43,280 --> 00:34:48,359
من أن هذا واضح، أحيانًا لا يكون كذلك.

735
00:34:45,639 --> 00:34:50,800
لنفترض أن أدريان في مكان ما

736
00:34:48,358 --> 00:34:53,279
بالقرب من مانشستر، فنحن نضغط

737
00:34:50,800 --> 00:34:54,240
على ذلك ونرى أنها

738
00:34:53,280 --> 00:34:56,240
جميلة

739
00:34:54,239 --> 00:34:59,679
40 درجة. لذا

740
00:34:56,239 --> 00:35:04,279
مرة أخرى، نمرر خط العرض و

741
00:34:59,679 --> 00:35:07,440
خط الطول. لقد أتيا من مانشستر.

742
00:35:04,280 --> 00:35:11,599
هذه موجودة في جدول Access

743
00:35:07,440 --> 00:35:14,280
محلي، صحيح؟ باستخدام نموذج، أستعلم من جدول

744
00:35:11,599 --> 00:35:17,760
Access المحلي الخاص بي عن المدينة التي نقرت

745
00:35:14,280 --> 00:35:21,800
عليها، وأحصل على خط العرض والطول هذا من

746
00:35:17,760 --> 00:35:26,040
جدول Access المحلي وأمررهما إلى هذا

747
00:35:21,800 --> 00:35:30,079
الاستدعاء. والآن أنا في عالم الـ Web API.

748
00:35:26,039 --> 00:35:34,559
إذًا، هذا هو عميل الويب. ها هو

749
00:35:30,079 --> 00:35:36,280
عنوان URL الخاص بالطقس، وهو open-meteo

750
00:35:34,559 --> 00:35:40,119
أو

751
00:35:36,280 --> 00:35:42,280
meo.com. ثم أقوم بإعداد طلب ويب وأخبره

752
00:35:40,119 --> 00:35:44,599
أن المورد هو 'forecast'

753
00:35:42,280 --> 00:35:47,839
بمعنى آخر، هذا هو المسار. أقول إنني

754
00:35:44,599 --> 00:35:50,000
أريد أن أفعل GET عبر HTTP. أنا أحصل على

755
00:35:47,838 --> 00:35:53,639
بيانات، أنا لا أنشر بيانات، وأنني

756
00:35:50,000 --> 00:35:56,039
أريد استرجاع صيغة Json. ثم تذكرون

757
00:35:53,639 --> 00:35:59,400
كيف تحدثنا عن بيانات إضافية

758
00:35:56,039 --> 00:36:00,880
ربما ليست معرفات. إذن هذا هو المكان الذي

759
00:35:59,400 --> 00:36:05,079
أضيف فيه

760
00:36:00,880 --> 00:36:06,480
سلاسل استعلام. لذا أضف سلسلة استعلام لخط العرض،

761
00:36:05,079 --> 00:36:09,400
ها هي. هذه هي القيمة التي

762
00:36:06,480 --> 00:36:11,639
يتم تمريرها هنا. أضف سلسلة استعلام لمعامل

763
00:36:09,400 --> 00:36:14,480
خط الطول، هذا ما يتم تمريره

764
00:36:11,639 --> 00:36:16,480
هنا. هل أريد الطقس الحالي؟ نعم.

765
00:36:14,480 --> 00:36:20,679
وحدة درجة الحرارة؟ فهرنهايت.

766
00:36:16,480 --> 00:36:22,480
سرعة الرياح؟ ميل في الساعة. المنطقة الزمنية؟ أمريكا/

767
00:36:20,679 --> 00:36:26,679
دنفر، حيث

768
00:36:22,480 --> 00:36:28,679
أنا. هكذا أقوم ببناء ذلك

769
00:36:26,679 --> 00:36:30,919
وهذا كل ما في الأمر. ولست مضطرًا

770
00:36:28,679 --> 00:36:33,279
للقيام بأي معالجة لعنوان URL، لست مضطرًا

771
00:36:30,920 --> 00:36:35,920
لعمل استعلام

772
00:36:33,280 --> 00:36:38,040
سلسلة، صحيح؟ أعني، لو كنت أفعل هذا

773
00:36:35,920 --> 00:36:39,838
باستخدام السلاسل النصية، لكان عليّ أن أملك

774
00:36:38,039 --> 00:36:41,519
مجرد معالجة للسلاسل النصية. هذا هو

775
00:36:39,838 --> 00:36:44,920
أحد محاسن

776
00:36:41,519 --> 00:36:49,880
مكتبة VBA Web هذه. لذا كان عليّ

777
00:36:44,920 --> 00:36:51,720
أن أذهب، حسنًا، سيكون هذا forecast؟

778
00:36:49,880 --> 00:36:53,400
حسنًا، الآن يجب عليّ

779
00:36:51,719 --> 00:36:57,838
أن أذهب

780
00:36:53,400 --> 00:37:01,358
latitude=

781
00:36:57,838 --> 00:37:04,199
ثم يجب أن أفعل، كما تعلمون،

782
00:37:01,358 --> 00:37:08,078

latitude، القيمة التي تم تمريرها

783
00:37:04,199 --> 00:37:10,799
ثم يجب أن أفعل + و

784
00:37:08,079 --> 00:37:12,839
أغلق علامة الاقتباس مرة أخرى وأفعل علامة العطف

785
00:37:10,800 --> 00:37:15,440
و

786
00:37:12,838 --> 00:37:17,199
longitude= ثم بلا بلا بلا.

787
00:37:15,440 --> 00:37:19,960
كل هذا يجب أن أفعله

788
00:37:17,199 --> 00:37:21,439
يدويًا، لكن هذه المكتبة تسمح لي

789
00:37:19,960 --> 00:37:25,720
بفعل

790
00:37:21,440 --> 00:37:28,159
ذلك في VBA العادي، صحيح؟ باستخدام With

791
00:37:25,719 --> 00:37:32,239
و End With، وأضيف المعلمات.

792
00:37:28,159 --> 00:37:34,719
إنها خاصية كائن، إنها إكمال تلقائي

793
00:37:32,239 --> 00:37:37,159
لطريقة الويب، صحيح؟ إذا ذهبت إلى هنا

794
00:37:34,719 --> 00:37:40,639
وكتبت 'webMethod.'، أحصل على delete،

795
00:37:37,159 --> 00:37:42,559
delete، head، patch، post، put، كل شيء.

796
00:37:40,639 --> 00:37:46,759
كل شيء موجود. إنه عالم VBA الجميل

797
00:37:42,559 --> 00:37:49,440
الذي نعرفه مع كل، كما تعلمون،

798
00:37:46,760 --> 00:37:53,640
الضمانات وراحة البال

799
00:37:49,440 --> 00:37:56,599
التي يوفرها ذلك. حسنًا، ثم أمرر هذا،

800
00:37:53,639 --> 00:37:58,118
أنفذه وأحصل على استجابة الويب.

801
00:37:56,599 --> 00:37:59,800
هذا ما يعود.

802
00:37:58,119 --> 00:38:02,119
لذا أقوم ببعض التحقق،

803
00:37:59,800 --> 00:38:04,359
ما هو رمز الحالة؟

804
00:38:02,119 --> 00:38:05,800
وهذا هو الـ dictionary الخاص بي. الآن يا كريستال،

805
00:38:04,358 --> 00:38:08,960
آمل أنني أقترب من إجابة

806
00:38:05,800 --> 00:38:11,318
سؤالك، وأقوم بتعيين الجذر. لذا أعرّف

807
00:38:08,960 --> 00:38:15,079
الجذر كـ dictionary وأقوم بتعيين

808
00:38:11,318 --> 00:38:16,119
الجذر كبيانات استجابة الويب. يا كريستال،

809
00:38:15,079 --> 00:38:18,680
في هذه

810
00:38:16,119 --> 00:38:22,760
المرحلة، مكتبة Microsoft Scripting

811
00:38:18,679 --> 00:38:27,719
تأخذ هذه البيانات بشكل أساسي، يجب أن أقول

812
00:38:22,760 --> 00:38:30,400
مزيج من مكتبة VBA Web التي

813
00:38:27,719 --> 00:38:36,078
نستخدمها ومكتبة Microsoft Scripting

814
00:38:30,400 --> 00:38:39,838
يحول هذا إلى dictionary متداخل وعميق.

815
00:38:36,079 --> 00:38:44,920
إنه يفعل ذلك ببساطة. وما

816
00:38:39,838 --> 00:38:47,358
يخصصه له هو، لمعلمات الاسم والقيمة،

817
00:38:44,920 --> 00:38:50,720
إنه يضع ببساطة، وسأعود

818
00:38:47,358 --> 00:38:53,799
إلى هذا، إنه يضع ببساطة

819
00:38:50,719 --> 00:38:57,159
هذه الأشياء هنا. على سبيل المثال،

820
00:38:53,800 --> 00:39:00,400
لدي البيانات في النقطة الخارجية،

821
00:38:57,159 --> 00:39:00,399
ثم لدي، لنقل،

822
00:39:03,719 --> 00:39:11,078
latitude ثم لديها قيمة 39.

823
00:39:08,838 --> 00:39:14,119
صحيح؟ ثم ما يفعله خلف الكواليس

824
00:39:11,079 --> 00:39:16,800
هو أنه يقول، حسنًا، نحصل على الطقس الحالي.

825
00:39:14,119 --> 00:39:20,920
أوه، حسنًا. الآن لدي كائن متداخل.

826
00:39:16,800 --> 00:39:20,920
لذا الآن يبدو مثل

827
00:39:21,159 --> 00:39:28,759
هذا. والآن لدي قيمة هنا 30 و

828
00:39:24,679 --> 00:39:31,399
ما إلى ذلك. ثم يمكن أن يكون لدي

829
00:39:28,760 --> 00:39:34,560
حتى كائن متداخل آخر، على سبيل المثال،

830
00:39:31,400 --> 00:39:37,480
إذا أردت، لكنه يبني ذلك تلقائيًا

831
00:39:34,559 --> 00:39:40,400
في هذا الـ dictionary المتداخل.

832
00:39:37,480 --> 00:39:44,000
إذا فكرت في عرض شجري،

833
00:39:40,400 --> 00:39:47,200
أو إذا فكرت في مستند XML أو

834
00:39:44,000 --> 00:39:48,880
قواعد البيانات التي هي NoSQL والتي لديها أيضًا

835
00:39:47,199 --> 00:39:52,118
معلمات

836
00:39:48,880 --> 00:39:54,358
اسم وقيمة متداخلة مثل ذلك.

837
00:39:52,119 --> 00:39:58,160
لذا آمل أن يكون هذا منطقيًا وسأعود

838
00:39:54,358 --> 00:39:58,159
إليه في النهاية.

839
00:39:58,199 --> 00:40:05,118
نحن نسميه، حسنًا، الآن حصلنا على البيانات

840
00:40:00,440 --> 00:40:07,880
مرة أخرى كـ dictionary وقمنا بتعيين الجذر

841
00:40:05,119 --> 00:40:10,000
له إلى 'current_weather'. قمنا بتعيين الطقس

842
00:40:07,880 --> 00:40:13,440
يساوي 'current_weather'. سبب قيامي

843
00:40:10,000 --> 00:40:16,358
بهذا هو أنني أقوم بتعيين اختصار

844
00:40:13,440 --> 00:40:18,559
لـ 'root.current_weather'. فالجذر هو

845
00:40:16,358 --> 00:40:21,239
البيانات. دعني، ربما يمكنني رؤية ما إذا كان بإمكاني وضع

846
00:40:18,559 --> 00:40:21,239
هذا جنبًا إلى جنب.

847
00:40:22,199 --> 00:40:28,598
إذًا الجذر هو البيانات، وهو هذا.

848
00:40:26,639 --> 00:40:31,239
والآن أقول،

849
00:40:28,599 --> 00:40:34,119
عرّف الطقس كـ dictionary

850
00:40:31,239 --> 00:40:37,000
وعيّن الطقس يساوي 'root.current_weather'.

851
00:40:34,119 --> 00:40:38,039
إذًا الآن أنا

852
00:40:37,000 --> 00:40:41,559
أقول

853
00:40:38,039 --> 00:40:44,119
إن الطقس هو هذا. لذا أنا في الأساس

854
00:40:41,559 --> 00:40:46,159
أقوم بعمل اسم مستعار لهذا الكائن المتداخل والآن

855
00:40:44,119 --> 00:40:49,519
يمكنني الوصول إليه بهذه

856
00:40:46,159 --> 00:40:52,960
الطريقة. كان بإمكاني فقط أن أقول في كل

857
00:40:49,519 --> 00:40:52,960
مرة 'root'

858
00:40:57,679 --> 00:41:00,480
ثم 'current'

859
00:41:02,960 --> 00:41:08,920
'temperature' وبعد ذلك ماذا؟

860
00:41:05,440 --> 00:41:11,440
ثم أو 'current_weather' وبعد ذلك

861
00:41:08,920 --> 00:41:15,200
'temperature'. آسف، لدي

862
00:41:11,440 --> 00:41:17,240
مشاكل في الكتابة هنا. لذا سيكون هذا

863
00:41:15,199 --> 00:41:19,399
'current_weather'. لذا كان بإمكاني الوصول إليه

864
00:41:17,239 --> 00:41:19,399
بهذه

865
00:41:20,960 --> 00:41:26,280
الطريقة، لكن يمكنني أيضًا إنشاء اختصارات أو

866
00:41:23,719 --> 00:41:28,759
إن شئتم، مؤشرات أو متغيرات

867
00:41:26,280 --> 00:41:32,560
تذهب مباشرة إلى هذا. لذا الآن في الأسفل

868
00:41:28,760 --> 00:41:37,440
أقول فقط 'weather.time'، 'root.timezone'.

869
00:41:32,559 --> 00:41:37,440
يمكنك الذهاب إلى أي عمق في الويب...

870
00:41:39,880 --> 00:41:47,680
API. لذا هنا لدي دالة، دعني

871
00:41:43,599 --> 00:41:47,680
أرى فقط إذا كان بإمكاني استدعاء

872
00:41:47,920 --> 00:41:56,079
هذا. جورج، اذهب فقط إلى View > Immediate

873
00:41:53,318 --> 00:41:59,239
Window. آه، شكرًا لك.

874
00:41:56,079 --> 00:41:59,240
جيد.

875
00:41:59,440 --> 00:42:03,200
تجمدت ذاكرتي. حسنًا، دعني أمسح هذا.

876
00:42:05,000 --> 00:42:09,400
إذًا، لنقم بتشغيل المساعد الصغير الخاص بي.

877
00:42:12,838 --> 00:42:17,799
ها هو عنوان URL الذي تم بناؤه.

878
00:42:16,280 --> 00:42:20,640
ويمكنكم رؤية ما كنت أتحدث عنه

879
00:42:17,800 --> 00:42:23,720
بعلامات الاستفهام وخطوط العرض

880
00:42:20,639 --> 00:42:23,719
والطول وما إلى ذلك.

881
00:42:24,838 --> 00:42:30,880
مكتبة VBA Web بشكل أساسي

882
00:42:28,400 --> 00:42:34,318
تبني هذا الـ URL لي ثم

883
00:42:30,880 --> 00:42:36,200
تتعامل مع التحدث إلى خدمة الويب.

884
00:42:34,318 --> 00:42:39,000
ها هي البيانات التي تعود مرة أخرى.

885
00:42:36,199 --> 00:42:39,000
إنها ليست منسقة.

886
00:42:41,639 --> 00:42:46,598
ثم أقوم فقط بطباعة بعض

887
00:42:44,679 --> 00:42:48,679
الخصائص المختلفة التي تعود

888
00:42:46,599 --> 00:42:52,519
من

889
00:42:48,679 --> 00:42:54,558
ذلك. دعني أنتقل إلى التنفيذ الفعلي

890
00:42:52,519 --> 00:42:57,759
لهذا، فقط للتأكد.

891
00:42:54,559 --> 00:43:00,000
إذًا ما يحدث هو أنك تحتاج

892
00:42:57,760 --> 00:43:02,319
إلى المراجع الضرورية لبيئة VBA.

893
00:43:00,000 --> 00:43:05,280
لذا تحتاج إلى VBA، مكتبة الكائنات،

894
00:43:02,318 --> 00:43:07,759
OLE Automation، Office 16. أعتقد

895
00:43:05,280 --> 00:43:10,880
أن هذه قياسية. تحتاج أيضًا

896
00:43:07,760 --> 00:43:14,280
إلى هذين الاثنين هنا: Microsoft WinHTTP

897
00:43:10,880 --> 00:43:16,200
Services و Microsoft Scripting Runtime.

898
00:43:14,280 --> 00:43:19,119
إذًا هذان هما الاثنان اللذان يجب

899
00:43:16,199 --> 00:43:22,358
أن يكونا لديك. إذا ذهبت إلى هنا إلى VBA الخاص بي، سنعود

900
00:43:19,119 --> 00:43:24,000
إلى ذلك، آسف، ربما Tools >

901
00:43:22,358 --> 00:43:26,679
References

902
00:43:24,000 --> 00:43:29,800
صحيح؟ يا رجل، أنا فقط أتشتت اليوم.

903
00:43:26,679 --> 00:43:32,358
نعم، ها نحن ذا. شكرًا لك.

904
00:43:29,800 --> 00:43:35,039
أيضًا.

905
00:43:32,358 --> 00:43:37,400
في كثير من الأحيان. هل يمكنني إلقاء اللوم على أدريان بيل؟

906
00:43:35,039 --> 00:43:39,400
لتشتيت انتباهي. حسنًا، شكرًا لك.

907
00:43:37,400 --> 00:43:42,280
يجب أن تضيف، أعتقد أنهما هذان الاثنان

908
00:43:39,400 --> 00:43:43,559
هنا: HTTP Services و Scripting Runtime.

909
00:43:42,280 --> 00:43:46,240
Scripting Runtime يمنحك

910
00:43:43,559 --> 00:43:47,319
الـ dictionary. HTTP Services تتيح لك التحدث

911
00:43:46,239 --> 00:43:49,919
عبر

912
00:43:47,318 --> 00:43:52,759
HTTP. الشيء الآخر، لا أصدق

913
00:43:49,920 --> 00:43:54,800
أن هناك 52 سؤالاً في الدردشة. الشيء الآخر

914
00:43:52,760 --> 00:43:57,880
هو الحصول على الأدوات. ها هي.

915
00:43:54,800 --> 00:43:59,800
github.com/VBA-tools/VBA-Web

916
00:43:57,880 --> 00:44:03,000
وكل ما تفعله هو الذهاب إلى

917
00:43:59,800 --> 00:44:07,599
Code > Download ZIP

918
00:44:03,000 --> 00:44:07,599
الملف. ومرة أخرى، هذا موجود في الفيديو الأطول.

919
00:44:09,639 --> 00:44:15,358
في مرحلة ما سيتم تنزيله. حسنًا.

920
00:44:12,440 --> 00:44:15,358
دعنا نفتح

921
00:44:16,719 --> 00:44:20,039
هذا. اذهب إلى

922
00:44:20,119 --> 00:44:27,599
Source. ها هي الملفات. وأنت فقط

923
00:44:22,880 --> 00:44:30,480
تسحب هذه إلى

924
00:44:27,599 --> 00:44:32,838
نافذة مشروعك، نافذة الوحدات النمطية الخاصة بك

925
00:44:30,480 --> 00:44:35,519
وسيتم تحميلها ببساطة. وهي: WebResponse،

926
00:44:32,838 --> 00:44:37,358
WebRequest، WebClient، IAuthenticator

927
00:44:35,519 --> 00:44:40,119
و WebHelpers أعتقد

928
00:44:37,358 --> 00:44:43,318
أنها الخمسة. WebHelpers هو ملف أساسي

929
00:44:40,119 --> 00:44:43,318
ثم الفئات.

930
00:44:45,079 --> 00:44:49,760
الوحدات النمطية. وبعد ذلك، أنت فقط تجلس

931
00:44:47,679 --> 00:44:52,000
وتكتب الكود الذي لدينا

932
00:44:49,760 --> 00:44:54,760
هنا. هذا API عام.

933
00:44:52,000 --> 00:44:56,679
دعني أريكم فقط كيف يبدو

934
00:44:54,760 --> 00:45:00,319
شيء المنتجات. لذا مع

935
00:44:56,679 --> 00:45:01,879
المنتجات... الآن أنا أتحدث إلى قاعدة بيانات SQL

936
00:45:00,318 --> 00:45:04,400
محلية وسأحاول

937
00:45:01,880 --> 00:45:08,519
شرح هذا من الناحية المفاهيمية بأسرع ما يمكن.

938
00:45:04,400 --> 00:45:11,039
إذًا، هذه مرة أخرى قاعدة بيانات SQL محلية

939
00:45:08,519 --> 00:45:13,199
تحدثنا عنها. لدي

940
00:45:11,039 --> 00:45:16,159
Web API قمت بإنشائه في Visual

941
00:45:13,199 --> 00:45:18,199
Studio في 5 دقائق حرفيًا. كل شيء

942
00:45:16,159 --> 00:45:22,358
تم إنشاؤه تلقائيًا. لم أكتب أيًا من هذا

943
00:45:18,199 --> 00:45:25,519
الكود. وإذا قمت بالوصول

944
00:45:22,358 --> 00:45:28,119
إليه، يمكنكم رؤية هنا، هذا هو عنوان URL.

945
00:45:25,519 --> 00:45:29,838
حسنًا، لنلقِ نظرة سريعة

946
00:45:28,119 --> 00:45:30,880
على هذا. إذا حصلت على المنتجات، هناك

947
00:45:29,838 --> 00:45:34,000
قائمة

948
00:45:30,880 --> 00:45:36,039
من المنتجات بأسعارها. كل هذا الآن

949
00:45:34,000 --> 00:45:38,318
هو خدمة ويب. لا توجد بيانات Access

950
00:45:36,039 --> 00:45:40,239
محلية هنا على الإطلاق. إذا نقرت على

951
00:45:38,318 --> 00:45:42,318
آيس كريم، أرى آيس كريم. شراب الشوكولاتة،

952
00:45:40,239 --> 00:45:44,439
أرى ذلك. لنقل أن سعر شراب الشوكولاتة

953
00:45:42,318 --> 00:45:47,639
ارتفع إلى

954
00:45:44,440 --> 00:45:50,559
2.99 وأضغط على حفظ المنتج. والآن

955
00:45:47,639 --> 00:45:53,679
يمكنكم رؤية لدينا 2.99 هنا. إذا أردت

956
00:45:50,559 --> 00:45:58,040
إضافة

957
00:45:53,679 --> 00:46:01,358
منتج. سنضيف "ديك رومي"

958
00:45:58,039 --> 00:46:01,358
وسيكون سعره

959
00:46:01,400 --> 00:46:06,800
29.99 دولارًا. احفظه. الآن لدينا "ديك رومي". حسنًا.

960
00:46:04,760 --> 00:46:08,720
كل هذا يتم داخل Access. وإذا

961
00:46:06,800 --> 00:46:12,280
لاحظتم، إذا ذهبت إلى قاعدة البيانات الأساسية

962
00:46:08,719 --> 00:46:16,879
وضغطت على F5، لاحظوا أن لدي "ديك رومي" هنا.

963
00:46:12,280 --> 00:46:19,160
إذًا، Access يتحدث إلى قاعدة بيانات SQL ولكن

964
00:46:16,880 --> 00:46:21,119
Access لا يستخدم SQL. وهذا هو

965
00:46:19,159 --> 00:46:23,358
الجزء الذي أردت التأكيد عليه.

966
00:46:21,119 --> 00:46:26,079
تحت الغطاء، Access يستخدم فقط

967
00:46:23,358 --> 00:46:28,119
Web API. لا يوجد شيء هنا في

968
00:46:26,079 --> 00:46:29,680
Access. لا توجد مراجع SQL.

969
00:46:28,119 --> 00:46:32,000
Access لا يعرف أين توجد

970
00:46:29,679 --> 00:46:34,239
قاعدة البيانات تلك. لا يهتم

971
00:46:32,000 --> 00:46:35,960
أين توجد قاعدة البيانات. لنقل أنني

972
00:46:34,239 --> 00:46:37,358
أدركت أن الديك الرومي في الواقع لا يتناسب

973
00:46:35,960 --> 00:46:39,480
جيدًا مع الآيس كريم و

974
00:46:37,358 --> 00:46:43,639
شراب الشوكولاتة والحلويات والموز.

975
00:46:39,480 --> 00:46:45,240
لذا يمكنني حذفه. الآن الديك الرومي قد ذهب. F5،

976
00:46:43,639 --> 00:46:47,400
ليس لدينا وقت للدخول في تفاصيل

977
00:46:45,239 --> 00:46:49,159
الكود، لكن دعوني فقط

978
00:46:47,400 --> 00:46:51,639
أريكم بسرعة كيف يبدو. لذا

979
00:46:49,159 --> 00:46:53,558
هذا هو نموذجي

980
00:46:51,639 --> 00:46:57,078
للمنتجات. وهذه كلها

981
00:46:53,559 --> 00:47:00,200
معالجات الأحداث الخاصة بي. نقرة على القائمة،

982
00:46:57,079 --> 00:47:02,920
قائمة المنتجات، حفظ منتج، ولاحظوا

983
00:47:00,199 --> 00:47:05,558
أنني أستدعي دالة إنشاء منتج من الـ API،

984
00:47:02,920 --> 00:47:08,440
تحديث منتج من الـ API. لذا كل هذا

985
00:47:05,559 --> 00:47:11,280
هو أساسيات Access. ثم في

986
00:47:08,440 --> 00:47:16,159
Products API الخاص بي، هذا هو المكان الذي أقوم فيه

987
00:47:11,280 --> 00:47:18,160
بالعمل الثقيل. كيف قمت بتحديث منتج؟

988
00:47:16,159 --> 00:47:20,279
إذًا، تحديث منتج من الـ API. يجب عليّ

989
00:47:18,159 --> 00:47:21,558
تمرير معرف المنتج، اسم المنتج

990
00:47:20,280 --> 00:47:24,640
وسعر الوحدة.

991
00:47:21,559 --> 00:47:28,280
ثم لدي طلبات الويب الخاصة بي.

992
00:47:24,639 --> 00:47:31,679
نفس الأشياء: عنوان URL، المورد. هذه

993
00:47:28,280 --> 00:47:35,000
المرة هو HTTP PUT. لدي كائن Json،

994
00:47:31,679 --> 00:47:37,000
صيغة Json، والآن سأضيف

995
00:47:35,000 --> 00:47:38,519
بعض الأشياء إلى الجسم. تحدثنا

996
00:47:37,000 --> 00:47:41,719
عن كيف أنه في بعض الأحيان عند استخدامك

997
00:47:38,519 --> 00:47:45,679
لـ PUTs، يجب أن يكون لديك جسم. أمرر ذلك

998
00:47:41,719 --> 00:47:48,000
ثم أعود.

999
00:47:45,679 --> 00:47:49,440
هذا هو مقدار الكود الذي كان

1000
00:47:48,000 --> 00:47:52,119
مطلوبًا للقيام

1001
00:47:49,440 --> 00:47:54,000
بذلك. ليس لدي هذه في دوال مشتركة،

1002
00:47:52,119 --> 00:47:55,760
كما تعلمون، في بيئة إنتاج،

1003
00:47:54,000 --> 00:47:57,760
سيكون لدي مكتبة مشتركة والكثير

1004
00:47:55,760 --> 00:47:59,400
من هذه الأشياء ستكون مشتركة، لذا

1005
00:47:57,760 --> 00:48:03,160
سيكون الكود أقل بكثير، لكنني أردت أن يكون

1006
00:47:59,400 --> 00:48:03,160
كل من هذه مفصلاً

1007
00:48:03,358 --> 00:48:08,960
بشكل فردي. دعوني أمر بسرعة على

1008
00:48:06,159 --> 00:48:09,759
ذلك. أي أسئلة حول ذلك؟ هناك

1009
00:48:08,960 --> 00:48:12,760
المزيد.

1010
00:48:09,760 --> 00:48:16,920
معلومات.

1011
00:48:12,760 --> 00:48:19,040
حسنًا، لدي سؤال سريع.

1012
00:48:16,920 --> 00:48:22,920
أتساءل، هذا ما فعلته للتو،

1013
00:48:19,039 --> 00:48:26,199
هو أنك تقوم بتحديث بيانات الـ API

1014
00:48:22,920 --> 00:48:29,079
ليصل إليها الآخرون؟ نعم. ما فعلته

1015
00:48:26,199 --> 00:48:32,078
هنا هو أنني على نموذجي هنا أقوم بتعديل

1016
00:48:29,079 --> 00:48:35,599
قاعدة بيانات SQL

1017
00:48:32,079 --> 00:48:38,640
في مكان ما، لكنني أفعل ذلك عبر الويب

1018
00:48:35,599 --> 00:48:42,119
API. لذا هذه القاعدة البيانات في هذه الحالة

1019
00:48:38,639 --> 00:48:43,920
مستضافة على جهازي المحلي، ولكن إذا كان هذا

1020
00:48:42,119 --> 00:48:47,240
عامًا، فقد تكون قاعدة البيانات في

1021
00:48:43,920 --> 00:48:50,519
Azure أو في مكان آخر، ونفس

1022
00:48:47,239 --> 00:48:55,159
الـ API هذا يمكن استخدامه لتحديث تلك

1023
00:48:50,519 --> 00:48:57,599
قاعدة البيانات. ربما يكون لدى أشخاص آخرين

1024
00:48:55,159 --> 00:48:59,279
صلاحية القراءة ولكن ليس صلاحية الكتابة. لذا يمكنني

1025
00:48:57,599 --> 00:49:02,798
أن أقرر ما هي الأذونات التي أريدها

1026
00:48:59,280 --> 00:49:05,319
أو ما أريد السماح به لتلك البيانات.

1027
00:49:02,798 --> 00:49:07,159
حسنًا، شكرًا لك. نعم، لكن الفرق

1028
00:49:05,318 --> 00:49:10,400
بين... الفرق بين هذا العرض التوضيحي

بالتأكيد، تفضل الجزء الأخير من الترجمة:

1029
00:49:07,159 --> 00:49:13,759
الذي رأيناه للتو وهذا العرض هنا،

1030
00:49:10,400 --> 00:49:13,760
كان مثال الطقس هو المثال

1031
00:49:14,920 --> 00:49:21,280
القياسي. أود أن أقول إن معظم الناس يفعلون

1032
00:49:17,358 --> 00:49:23,199
هذا في Access. هناك API متاح،

1033
00:49:21,280 --> 00:49:26,720
سواء للطقس، أو محول عملات،

1034
00:49:23,199 --> 00:49:28,798
أو البحث عن كتب بـ ISBN، أو الخرائط،

1035
00:49:26,719 --> 00:49:30,959
أو أي شيء آخر. وكل ما أريد فعله

1036
00:49:28,798 --> 00:49:32,159
هو قراءة البيانات فقط. لا أريد

1037
00:49:30,960 --> 00:49:34,199
التحديث، لا أريد تغيير

1038
00:49:32,159 --> 00:49:35,920
قاعدة البيانات الخلفية. أريد فقط استخدام

1039
00:49:34,199 --> 00:49:37,960
بيانات الواجهة الخلفية تلك للحصول على بيانات لتطبيقي.

1040
00:49:35,920 --> 00:49:40,039
هذا هو الاستخدام الأكثر شيوعًا.

1041
00:49:37,960 --> 00:49:42,280
أما المثال الذي نظرنا إليه هنا بشكل

1042
00:49:40,039 --> 00:49:45,079
سطحي هو في الواقع حيث نقوم

1043
00:49:42,280 --> 00:49:47,519
بتحديث البيانات نفسها بالفعل.

1044
00:49:45,079 --> 00:49:51,920
إذًا هذه حالة بيانات للقراءة والكتابة

1045
00:49:47,519 --> 00:49:54,280
على عكس حالة القراءة فقط. حسنًا، رائع، شكرًا لك.

1046
00:49:51,920 --> 00:49:58,880
وأعتقد أنه قد يكون وقتًا جيدًا

1047
00:49:54,280 --> 00:50:02,079
لإضافة أن بعض واجهات برمجة التطبيقات

1048
00:49:58,880 --> 00:50:05,519
عامة تمامًا ومتاحة

1049
00:50:02,079 --> 00:50:08,519
لأي شخص للحصول على البيانات على وجه الخصوص، ولكن

1050
00:50:05,519 --> 00:50:11,239
كما قلت، تحديث البيانات قد

1051
00:50:08,519 --> 00:50:15,000
يتطلب أذونات أخرى معينة.

1052
00:50:11,239 --> 00:50:18,279
في الواقع هناك طرق للمصادقة، لذا

1053
00:50:15,000 --> 00:50:20,760
بعض واجهات برمجة التطبيقات لا تسمح لك حتى

1054
00:50:18,280 --> 00:50:23,640
بالوصول

1055
00:50:20,760 --> 00:50:28,040
إليها. على سبيل المثال، يمكنك الوصول إلى

1056
00:50:23,639 --> 00:50:30,279
بيانات Quickbooks من خلال API، نعم، لكن

1057
00:50:28,039 --> 00:50:32,960
لا يمكنك ببساطة الوصول إلى

1058
00:50:30,280 --> 00:50:36,640
بيانات Quickbooks الخاصة بي لأنه يجب أن يكون لديك

1059
00:50:32,960 --> 00:50:39,519
المصادقة المناسبة للوصول

1060
00:50:36,639 --> 00:50:41,000
إلى ذلك، ومصادقتك ستكون

1061
00:50:39,519 --> 00:50:43,798
مختلفة عن مصادقتي وستأخذك

1062
00:50:41,000 --> 00:50:46,440
إلى مكان مختلف. لذا هناك المزيد

1063
00:50:43,798 --> 00:50:51,480
في الأمر أكثر مما لدى جورج وقت

1064
00:50:46,440 --> 00:50:53,519
لشرحه هنا، لكن هذه هي أساسيات

1065
00:50:51,480 --> 00:50:56,039
الـ APIs العامة.

1066
00:50:53,519 --> 00:51:00,719
شكرًا لك ماريا. أحد الفئات هو

1067
00:50:56,039 --> 00:51:04,039
IWebAuthenticator. إذا ذهبت إلى

1068
00:51:00,719 --> 00:51:06,480
رابط VBA Web، الموجود في

1069
00:51:04,039 --> 00:51:09,960
العرض التقديمي، يمكنك أن ترى أنه يتحدث عن

1070
00:51:06,480 --> 00:51:14,358
أدوات المصادقة. كما أن به مجموعة من

1071
00:51:09,960 --> 00:51:16,358
ملاحظات البدء، وأمثلة على عمل Get

1072
00:51:14,358 --> 00:51:18,838
واستجابات الويب وطلبات الويب. لديه

1073
00:51:16,358 --> 00:51:20,798
مثال على المصادقة. لذا إذا كانت هناك

1074
00:51:18,838 --> 00:51:23,719
حالة تحتاج فيها إلى

1075
00:51:20,798 --> 00:51:26,719
مصادقة للوصول إلى web API، فالأمر

1076
00:51:23,719 --> 00:51:26,719
ممكن.

1077
00:51:28,639 --> 00:51:32,879
نعم، اعتقدت أنه كان مصدرًا رائعًا حقًا.

1078
00:51:30,798 --> 00:51:34,798
الشيء الوحيد الذي كان مربكًا بعض

1079
00:51:32,880 --> 00:51:37,039
الشيء بالنسبة لي هو أن

1080
00:51:34,798 --> 00:51:41,119
الأمثلة، على ما أعتقد، كانت في الواقع في

1081
00:51:37,039 --> 00:51:43,480
Excel VBA. لذا إذا لم نكن على دراية

1082
00:51:41,119 --> 00:51:45,000
بـ Excel، كما تعلم، كمطوري Access،

1083
00:51:43,480 --> 00:51:46,559
قد تضطر إلى القراءة

1084
00:51:45,000 --> 00:51:50,400
قليلاً في ذلك، لكن أعني

1085
00:51:46,559 --> 00:51:53,720
بشكل أساسي VBA هو VBA، لذا لم يكن

1086
00:51:50,400 --> 00:51:56,200
من الصعب جدًا فهمه. صحيح يا ماريا؟

1087
00:51:53,719 --> 00:51:58,879
هل يجب أن ألصق رابط العرض التقديمي

1088
00:51:56,199 --> 00:52:01,039
الخاص بي؟ سيكون ذلك جيدًا.

1089
00:51:58,880 --> 00:52:03,559
لدي مكان في Access Lunchtime

1090
00:52:01,039 --> 00:52:05,719
تحت المجلدات يمكنني وضع الأشياء، لكن

1091
00:52:03,559 --> 00:52:07,880
أعتقد، كما تعلمون، إذا أردت

1092
00:52:05,719 --> 00:52:10,358
إضافة أو تحديث هذا أو أي شيء، فمن المرجح

1093
00:52:07,880 --> 00:52:13,720
أنك ستفعل ذلك على موقعك. لذا سنتأكد

1094
00:52:10,358 --> 00:52:15,400
في التسجيل من وضع رابط

1095
00:52:13,719 --> 00:52:19,159
مباشرة إلى

1096
00:52:15,400 --> 00:52:22,280
هذا. يبدو رائعًا. يمكنني الإجابة على عدد قليل من

1097
00:52:19,159 --> 00:52:25,039
الأسئلة هنا. لدينا يد مرفوعة

1098
00:52:22,280 --> 00:52:26,880
أيضًا. ريتشارد رفع يده. أوه، حسنًا.

1099
00:52:25,039 --> 00:52:28,440
هل يجب أن آخذ اليد المرفوعة أم أجيب على الأشياء

1100
00:52:26,880 --> 00:52:32,519
من الدردشة أولاً؟ لنبدأ

1101
00:52:28,440 --> 00:52:35,318
باليد المرفوعة أولاً. حسنًا، تفضل

1102
00:52:32,519 --> 00:52:37,719
ريتشارد. جورج، شكرًا، عرض رائع.

1103
00:52:35,318 --> 00:52:40,239
وأود أن ألقي التحية لأنني كنت أعيش

1104
00:52:37,719 --> 00:52:42,399
في كولورادو. نشأت هناك، كان والدي

1105
00:52:40,239 --> 00:52:44,318
في القوات الجوية، لذا كنا

1106
00:52:42,400 --> 00:52:47,880
نعيش في كولورادو سبرينغز لمدة

1107
00:52:44,318 --> 00:52:51,400
سبع سنوات تقريبًا. أردت فقط أن ألقي التحية.

1108
00:52:47,880 --> 00:52:53,318
لكن نعم، لدي سؤال وقد

1109
00:52:51,400 --> 00:52:55,920
تكون لدي فرصة مشروع

1110
00:52:53,318 --> 00:52:58,119
سحابي. إنه مشروع كبير جدًا.

1111
00:52:55,920 --> 00:53:01,039
هل تفضيلك، إذا كنت

1112
00:52:58,119 --> 00:53:03,920
ستضع البيانات في السحابة،

1113
00:53:01,039 --> 00:53:06,719
هو استخدام API فقط لإجراء

1114
00:53:03,920 --> 00:53:10,159
استدعاءات قاعدة البيانات ذهابًا وإيابًا

1115
00:53:06,719 --> 00:53:11,759
والنشر؟ نعم، سؤال رائع. إذا أردت

1116
00:53:10,159 --> 00:53:13,920
عرض بياناتك لنقاط نهاية

1117
00:53:11,760 --> 00:53:16,240
مختلفة، وتريد تطبيقات مختلفة،

1118
00:53:13,920 --> 00:53:18,358
واستيعابًا مختلفًا للبيانات،

1119
00:53:16,239 --> 00:53:19,798
فستريد بالتأكيد استخدام

1120
00:53:18,358 --> 00:53:23,318
Web

1121
00:53:19,798 --> 00:53:26,519
API. إذا كنت تستهلك البيانات فقط من

1122
00:53:23,318 --> 00:53:28,880
داخل تطبيق ويب على سبيل المثال، فقد

1123
00:53:26,519 --> 00:53:29,880
يكون ذلك مبالغة. يعتمد الأمر قليلاً

1124
00:53:28,880 --> 00:53:32,720
على

1125
00:53:29,880 --> 00:53:37,039
حالة الاستخدام. سأعطيك مثالاً. تقريبًا كل

1126
00:53:32,719 --> 00:53:41,159
تطبيقات الويب التي أكتبها تستخدم فقط

1127
00:53:37,039 --> 00:53:45,000
الوصول الداخلي لبيانات .NET. لكن حيث

1128
00:53:41,159 --> 00:53:47,159
أريد عرض بياناتي خارج ذلك،

1129
00:53:45,000 --> 00:53:49,679
مجموعة فرعية من البيانات أو أيًا كان، عندها

1130
00:53:47,159 --> 00:53:52,480
سأستخدم Web API. لكن

1131
00:53:49,679 --> 00:53:56,960
الخيار الافتراضي سيكون فقط

1132
00:53:52,480 --> 00:53:58,679
للوصول الداخلي لبيانات .NET. رائع، شكرًا.

1133
00:53:56,960 --> 00:54:02,838
نعم.

1134
00:53:58,679 --> 00:54:04,519
بالتأكيد. لنرَ هنا. أنا أنظر في

1135
00:54:02,838 --> 00:54:06,759
الاستعلامات.

1136
00:54:04,519 --> 00:54:09,838
الاستفسارات.

1137
00:54:06,760 --> 00:54:11,599
ساعدوا جورج هنا إذا كان هناك

1138
00:54:09,838 --> 00:54:14,719
شيء تعتقدون أنه مهم حقًا

1139
00:54:11,599 --> 00:54:17,240
ولم تحصلوا على إجابة له،

1140
00:54:14,719 --> 00:54:21,199
أعيدوا كتابته في الدردشة.

1141
00:54:17,239 --> 00:54:23,719
لكننا سنحاول مسح

1142
00:54:21,199 --> 00:54:26,078
الأسئلة. حسنًا، بن لديه سؤال. إذا

1143
00:54:23,719 --> 00:54:28,118
حصلت على النتيجة من API أو أي

1144
00:54:26,079 --> 00:54:30,599
مصدر غير قاعدة بيانات، هل هناك طريقة سهلة

1145
00:54:28,119 --> 00:54:32,318
لربط تلك البيانات بعنصر تحكم في نموذج

1146
00:54:30,599 --> 00:54:35,559
بعبارة أخرى، أريد أن تظهر البيانات

1147
00:54:32,318 --> 00:54:38,798
في مربع قائمة. هل يجب أن أضيف كل

1148
00:54:35,559 --> 00:54:41,960
صف كعنصر؟ هل هناك طريقة بسيطة؟

1149
00:54:38,798 --> 00:54:45,239
أنا متأكد من أن هناك أشخاصًا

1150
00:54:41,960 --> 00:54:47,679
أفضل بكثير في هذا المستوى من واجهة مستخدم Access

1151
00:54:45,239 --> 00:54:54,439
مني. دعني أخبرك بما فعلته

1152
00:54:47,679 --> 00:54:59,159
هنا، لقد فعلت ذلك في حلقة تكرارية. لا

1153
00:54:54,440 --> 00:55:01,400
أعرف ما إذا كان هناك ربط بيانات مباشر من

1154
00:54:59,159 --> 00:55:01,399
dictionary

1155
00:55:01,760 --> 00:55:08,640
إلى

1156
00:55:05,679 --> 00:55:10,639
قائمة. ما فعلته على سبيل المثال في شيء

1157
00:55:08,639 --> 00:55:13,440
مماثل هو أنني في الواقع أنشأت مثل

1158
00:55:10,639 --> 00:55:16,558
جدول مؤقت وأضفت الصفوف بالفعل

1159
00:55:13,440 --> 00:55:19,679
ثم وضعت مربع القائمة الخاص بي

1160
00:55:16,559 --> 00:55:21,440
كمصدر للجدول المؤقت.

1161
00:55:19,679 --> 00:55:24,199
رائع. هذان سيكونان نهجين مختلفين

1162
00:55:21,440 --> 00:55:27,880
لنفس الشيء، لكن

1163
00:55:24,199 --> 00:55:30,399
في النهاية ينتهي بك الأمر مع حلقة تكرارية للحصول على تلك

1164
00:55:27,880 --> 00:55:32,760
البيانات من الـ dictionary إلى

1165
00:55:30,400 --> 00:55:36,920
شيء يمكن لـ Access التعامل معه بشكل

1166
00:55:32,760 --> 00:55:38,559
أصلي أكثر. جميل. نعم. تفضل، آسف.

1167
00:55:36,920 --> 00:55:39,838
آسف، هل يمكنني توضيح شيء ما؟

1168
00:55:38,559 --> 00:55:42,359
لأن هذا مشابه جدًا للسؤال

1169
00:55:39,838 --> 00:55:45,798
الذي طرحته وهو كيف

1170
00:55:42,358 --> 00:55:48,119
ربطت البيانات في نموذجك؟

1171
00:55:45,798 --> 00:55:51,119
دعني أخمن أن ما فعلته

1172
00:55:48,119 --> 00:55:53,400
في الواقع لم يكن نموذجًا بل مربع قائمة،

1173
00:55:51,119 --> 00:55:55,480
وأن النموذج الفرعي كان يظهر فقط

1174
00:55:53,400 --> 00:55:58,160
ما حصلت عليه للتو من بيانات فردية

1175
00:55:55,480 --> 00:56:00,960
عندما تم طلبها. نعم، هذا

1176
00:55:58,159 --> 00:56:02,679
ربما ليس أفضل طريقة للقيام بذلك، لكن

1177
00:56:00,960 --> 00:56:06,000
الشيء الذي أفعله هو أنني نوعًا ما

1178
00:56:02,679 --> 00:56:09,879
أربط بشكل صريح الحصول على البيانات من

1179
00:56:06,000 --> 00:56:12,280
مصدر البيانات بربطها بواجهة المستخدم في

1180
00:56:09,880 --> 00:56:14,400
بعض الطرق. لدي هذا الكود الذي ربما لا داعي له

1181
00:56:12,280 --> 00:56:17,720
حيث أكرر عبر

1182
00:56:14,400 --> 00:56:20,559
المجموعة وأضيف المعرف، اسم المنتج

1183
00:56:17,719 --> 00:56:22,519
وسعر الوحدة. لكن من ناحية أخرى،

1184
00:56:20,559 --> 00:56:25,680
أنا أعرف أنه كلما استدعيت دالة الحصول على

1185
00:56:22,519 --> 00:56:28,559
المنتجات، سيحدث ذلك. أقوم بمسحها

1186
00:56:25,679 --> 00:56:31,440
ثم أعيد بنائها. أنا متأكد من أن هناك

1187
00:56:28,559 --> 00:56:33,160
طرقًا أفضل للقيام بذلك، لكن السبب

1188
00:56:31,440 --> 00:56:34,920
الآخر هو من حيث المعلومات الصريحة

1189
00:56:33,159 --> 00:56:37,318
من العرض التوضيحي، صحيح؟

1190
00:56:34,920 --> 00:56:39,920
آمل أن يكون الأمر واضحًا جدًا. حسنًا، هنا

1191
00:56:37,318 --> 00:56:41,759
أحصل على قائمة المنتجات من

1192
00:56:39,920 --> 00:56:44,480
الـ API. يمكنني الذهاب والنظر في ماهية تلك الدالة

1193
00:56:41,760 --> 00:56:46,760
وعندما تعود،

1194
00:56:44,480 --> 00:56:48,798
أولاً، من الواضح أنني أقوم بمسح

1195
00:56:46,760 --> 00:56:51,440
القائمة ثم لكل منتج في

1196
00:56:48,798 --> 00:56:53,318
المنتجات، أضيفه إلى القائمة. لذا مرة أخرى،

1197
00:56:51,440 --> 00:56:55,280
آمل أن يكون الأمر صريحًا جدًا

1198
00:56:53,318 --> 00:56:56,880
بدون ربط بيانات، لكن قد تكون هناك

1199
00:56:55,280 --> 00:56:58,599
طريقة أفضل للقيام بذلك.

1200
00:56:56,880 --> 00:57:00,480
سبب سؤالي في المقام الأول

1201
00:56:58,599 --> 00:57:02,920
كان لأن كريستال كانت مرتبكة حقًا

1202
00:57:00,480 --> 00:57:05,760
بشأن كيفية ربطها بالنموذج

1203
00:57:02,920 --> 00:57:07,960
ولم أستطع الإجابة. ثم تبين

1204
00:57:05,760 --> 00:57:09,599
أنك في الواقع لم تربطها

1205
00:57:07,960 --> 00:57:12,400
بالنموذج، كان لديك مربع قائمة

1206
00:57:09,599 --> 00:57:14,720
يبدو كقسم التفاصيل،

1207
00:57:12,400 --> 00:57:17,599
ثم كان لديك ما بدا وكأنه نموذج فرعي

1208
00:57:14,719 --> 00:57:20,239
تحته ولكنه ربما كان مجرد

1209
00:57:17,599 --> 00:57:23,200
أنك عرضت تلك المعلومات

1210
00:57:20,239 --> 00:57:26,479
بشكل فوري. نعم، حسنًا.

1211
00:57:23,199 --> 00:57:29,639
شكرًا لك. نعم، أعتقد أن كريستال

1212
00:57:26,480 --> 00:57:32,599
منحتني مهارات تصميم واجهة مستخدم Access

1213
00:57:29,639 --> 00:57:35,679
أكبر مما أستحق. أعتقد أن الأمر واضح

1214
00:57:32,599 --> 00:57:38,039
الآن يا جورج، لأكون صريحًا، ما فعلته

1215
00:57:35,679 --> 00:57:40,239
ولماذا لن يكون لهذا السؤال

1216
00:57:38,039 --> 00:57:43,680
إجابة. أعتقد أنه كان يتحدث عن

1217
00:57:40,239 --> 00:57:45,118
نموذج المنتجات يا جورج، وليس المدينة. نعم.

1218
00:57:43,679 --> 00:57:47,598
الذي عرضته للتو، لكنه

1219
00:57:45,119 --> 00:57:50,318
ذهب الآن. أنا سعيد ولاحظت أن جورج

1220
00:57:47,599 --> 00:57:52,480
رفع يده. شكرًا لك، شكرًا

1221
00:57:50,318 --> 00:57:56,400
جزيلاً أدريان. نعم، أنا تمامًا

1222
00:57:52,480 --> 00:58:00,519
غير مرتبط، غير مقيد.

1223
00:57:56,400 --> 00:58:05,000
أعمل بحرية هنا. حسنًا، أنت على حق.

1224
00:58:00,519 --> 00:58:08,838
أنا أعمل بشكل غير مثالي ربما من منظور

1225
00:58:05,000 --> 00:58:12,039
واجهة مستخدم Access، لكن بالنسبة لي يبدو الأمر منطقيًا

1226
00:58:08,838 --> 00:58:14,558
من منظور العرض التوضيحي لأنني بشكل

1227
00:58:12,039 --> 00:58:16,520
صريح جدًا عندما تعود البيانات، أنا

1228
00:58:14,559 --> 00:58:19,119
أضعها بشكل صريح حيث أريدها أن

1229
00:58:16,519 --> 00:58:21,519
تذهب. لم يكن لدي أي فكرة أن أي شخص

1230
00:58:19,119 --> 00:58:23,559
كان ينتقد ما فعلته. كان الأمر

1231
00:58:21,519 --> 00:58:26,358
ببساطة أننا لم نفهم كيف

1232
00:58:23,559 --> 00:58:28,519
فعلت ذلك. ما كنا نعتقده كان

1233
00:58:26,358 --> 00:58:31,199
شيئًا أكثر، كما تعلم، ما

1234
00:58:28,519 --> 00:58:33,559
نفهمه كلانا أنه سيكون صعبًا جدًا،

1235
00:58:31,199 --> 00:58:35,679
لكن تبين أنك فعلته بطريقة أبسط.

1236
00:58:33,559 --> 00:58:38,920
مبدأ البساطة شيء عظيم يجب اتباعه.

1237
00:58:35,679 --> 00:58:42,838
اجعل الأمر بسيطًا. لقد فعلت ذلك وظهر

1238
00:58:38,920 --> 00:58:44,318
بشكل جيد. حسنًا، كل شيء جيد. إذا لم تكن

1239
00:58:42,838 --> 00:58:47,838
جماليات تصميمي تتعرض للنقد،

1240
00:58:44,318 --> 00:58:51,798
فكان يجب أن تكون كذلك.

1241
00:58:47,838 --> 00:58:54,960
كل شيء جيد. شكرًا لك جورج وليو.

1242
00:58:51,798 --> 00:58:56,920
جورج، تفضل. لا، أنت

1243
00:58:54,960 --> 00:58:58,920
رفعت يدك أولاً.

1244
00:58:56,920 --> 00:59:03,119
كنت سأقول فقط أن الطريقة التي فعلت بها ذلك

1245
00:58:58,920 --> 00:59:05,400
مع تطبيق كتالوج كتب المكتبة الخاص بي هي نوعًا ما

1246
00:59:03,119 --> 00:59:08,400
مزيج من الاثنين. في الإصدار النهائي،

1247
00:59:05,400 --> 00:59:11,000
قمت بتحليل الـ dictionary، ووضعت

1248
00:59:08,400 --> 00:59:13,440
القيم في جدول مؤقت وربطت

1249
00:59:11,000 --> 00:59:17,280
الجدول المؤقت بالنموذج، وهو ما

1250
00:59:13,440 --> 00:59:19,079
أعتقد أن ماريا قالته. نعم، شكرًا لك ليو.

1251
00:59:17,280 --> 00:59:20,839
شكرًا لك. جورج يونغ، شكرًا جزيلاً.

1252
00:59:19,079 --> 00:59:23,359
أعجبني العرض التقديمي، إنه رائع حقًا.

1253
00:59:20,838 --> 00:59:26,798
أعتقد أنني رأيته من قبل، وهذا

1254
00:59:23,358 --> 00:59:29,199
يؤكد ويعيد تأكيد أهمية

1255
00:59:26,798 --> 00:59:31,719
هذا ومعرفة المزيد من التفاصيل

1256
00:59:29,199 --> 00:59:35,759
عنه. لكن مع ذلك، لقد استخدمت

1257
00:59:31,719 --> 00:59:39,279
أدوات VBA Web الخاصة بـ Tim Hall من قبل. بالنظر إلى

1258
00:59:35,760 --> 00:59:41,200
موقع GitHub، كان آخر إصدار

1259
00:59:39,280 --> 00:59:45,160
في عام 2019. لذا لا يبدو أنه تم

1260
00:59:41,199 --> 00:59:47,719
تحديثه منذ خمس سنوات. عندما استخدمت

1261
00:59:45,159 --> 00:59:49,879
هذا في ذلك الوقت، توقفت عن استخدامه

1262
00:59:47,719 --> 00:59:53,480
ومنذ ذلك الحين استخدمت مكتبتين أخريين

1263
00:59:49,880 --> 00:59:56,240
مختلفتين للقيام

1264
00:59:53,480 --> 01:00:00,639
بذلك لأنه إذا تذكرت بشكل صحيح،

1265
00:59:56,239 --> 01:00:03,639
واجهت مجموعة من نتائج Json التي

1266
01:00:00,639 --> 01:00:05,920
فشلت في معالجتها. لذا كنت أتساءل

1267
01:00:03,639 --> 01:00:09,480
ما إذا كان أي شخص هنا في هذا الجمهور قد واجه

1268
01:00:05,920 --> 01:00:11,680
أثناء استخدام هذه المكتبة بالذات

1269
01:00:09,480 --> 01:00:13,798
مجموعة معينة من نتائج Json

1270
01:00:11,679 --> 01:00:17,598
لم يتمكن هذا الشيء من تحليلها

1271
01:00:13,798 --> 01:00:20,119
بشكل صحيح. لقد رأيت Json صالحة

1272
01:00:17,599 --> 01:00:22,640
ومنسقة بشكل صحيح، لكن

1273
01:00:20,119 --> 01:00:26,079
محلل VBA Web Json لم يقرأها

1274
01:00:22,639 --> 01:00:28,239
بشكل صحيح بسبب قيود VBA

1275
01:00:26,079 --> 01:00:31,200
باستخدام المجموعات و

1276
01:00:28,239 --> 01:00:34,679
الـ dictionaries. لذا أنا أستخدم الآن

1277
01:00:31,199 --> 01:00:38,639
محلل Json الخاص بمكتبة Scripting، الذي

1278
01:00:34,679 --> 01:00:40,598
لا شيء يفشل في تحليله، كل شيء يُقرأ

1279
01:00:38,639 --> 01:00:43,279
بشكل صحيح. لكن هناك

1280
01:00:40,599 --> 01:00:45,280
ثغرة أمنية كبيرة فيه. لذا أنا

1281
01:00:43,280 --> 01:00:47,039
فضولي فقط لمعرفة ما إذا كان أي شخص قد واجه

1282
01:00:45,280 --> 01:00:48,519
ذلك، وما إذا كان منذ خمس سنوات

1283
01:00:47,039 --> 01:00:50,960
قد تم إصلاح كل شيء.

1284
01:00:48,519 --> 01:00:53,119
لقد واجهت ذلك بالفعل

1285
01:00:50,960 --> 01:00:55,400
وقمت بإصلاحه. في الواقع، لا أتذكر

1286
01:00:53,119 --> 01:00:58,440
التفاصيل الآن لكنني أعلم أنه كان هناك

1287
01:00:55,400 --> 01:01:00,079
نقاش في UA حول هذا حيث

1288
01:00:58,440 --> 01:01:02,760
تناقشنا جميعًا مع جاك

1289
01:01:00,079 --> 01:01:06,440
ليتش حول سبب سوء هذا الأمر.

1290
01:01:02,760 --> 01:01:07,880
لا أعرف منذ متى كان ذلك.

1291
01:01:06,440 --> 01:01:10,318
كان الأمر يتعلق بنوع البيانات.

1292
01:01:07,880 --> 01:01:11,079
كان نوع البيانات هو ما يسبب

1293
01:01:10,318 --> 01:01:13,798
التعطل.

1294
01:01:11,079 --> 01:01:16,400
يقول أليكس أيضًا في التعليقات

1295
01:01:13,798 --> 01:01:17,519
هنا إنه واجه مشكلة

1296
01:01:16,400 --> 01:01:21,960
وقام بتعديلها.

1297
01:01:17,519 --> 01:01:24,559
حسنًا. عادةً ما تحتوي هذه على قائمة

1298
01:01:21,960 --> 01:01:26,960
بالإصدارات والإصلاحات. قد ترغب

1299
01:01:24,559 --> 01:01:28,480
في إلقاء نظرة إذا كنت فضوليًا.

1300
01:01:26,960 --> 01:01:30,079
حسنًا، قد أتواصل مع بعضكم يا رفاق.

1301
01:01:28,480 --> 01:01:31,798
لم أستخدمه منذ فترة

1302
01:01:30,079 --> 01:01:34,200
وربما حان الوقت لإلقاء نظرة عليه مرة أخرى.

1303
01:01:31,798 --> 01:01:35,440
هذا كل ما أفكر فيه. أرسل لي

1304
01:01:34,199 --> 01:01:36,879
بريدًا إلكترونيًا وسأبحث عنه لك

1305
01:01:35,440 --> 01:01:39,280
لأنني أتذكر أنني علقت عليه بوضوح

1306
01:01:36,880 --> 01:01:41,519
عندما فعلت ذلك، كان ذلك منذ سنوات. جورج

1307
01:01:39,280 --> 01:01:45,000
ذكر أنه واجه مشكلة

1308
01:01:41,519 --> 01:01:46,199
مع أحرف نص Unicode. حسنًا، يبدو

1309
01:01:45,000 --> 01:01:48,760
أن الكثير منكم قد عمل بالفعل

1310
01:01:46,199 --> 01:01:51,960
مع web APIs، لكن هناك أداة

1311
01:01:48,760 --> 01:01:54,119
تسمى Postman وهي رائعة

1312
01:01:51,960 --> 01:01:56,920
لتجربة web API، سواء

1313
01:01:54,119 --> 01:01:58,720
كان عامًا أو كان واحدًا

1314
01:01:56,920 --> 01:02:01,519
لديك أنت أو مؤسستك.

1315
01:01:58,719 --> 01:02:03,519
إنه postman.com.

1316
01:02:01,519 --> 01:02:05,278
إنه تنزيل مجاني. يمكنك أن ترى هنا

1317
01:02:03,519 --> 01:02:08,519
تضع Get، تضع

1318
01:02:05,278 --> 01:02:12,000
عنوان URL ويمكنك إضافة قيم وسيعيد

1319
01:02:08,519 --> 01:02:14,038
في الواقع Json منسقة بشكل جيد.

1320
01:02:12,000 --> 01:02:17,199
يمكنك عمل Puts، يمكنك عمل Gets، يمكنك عمل

1321
01:02:14,039 --> 01:02:19,480
Deletes، يمكنك عمل Creates. إنها طريقة

1322
01:02:17,199 --> 01:02:21,759
جميلة حقًا للتأكد من أن

1323
01:02:19,480 --> 01:02:24,400
معلماتك صحيحة بحيث

1324
01:02:21,760 --> 01:02:27,079
على الأقل تتواصل بشكل صحيح

1325
01:02:24,400 --> 01:02:30,000
مع web API قبل أن تذهب

1326
01:02:27,079 --> 01:02:31,680
وتنفذه في VBA. بحيث تعلم

1327
01:02:30,000 --> 01:02:33,519
على الأقل أنه إذا كان هناك خطأ عندما

1328
01:02:31,679 --> 01:02:35,399
تقوم بتنفيذ VBA الخاص بك، فأنت تعلم

1329
01:02:33,519 --> 01:02:37,199
أنه شيء في VBA وليس

1330
01:02:35,400 --> 01:02:40,639
شيئًا في البيانات التي

1331
01:02:37,199 --> 01:02:43,919
تمررها. هذا هو postman.com. إنه

1332
01:02:40,639 --> 01:02:46,199
تطبيق مجاني رائع. كان هذا

1333
01:02:43,920 --> 01:02:48,079
عرضًا تقديميًا رائعًا على الرغم من أنك

1334
01:02:46,199 --> 01:02:50,879
ربما لم تتمكن من تغطية كل ما

1335
01:02:48,079 --> 01:02:53,519
كنت تأمل فيه. أعتقد أنه خدم مجتمعنا

1336
01:02:50,880 --> 01:02:56,000
جيدًا لأنه من الواضح أن هناك

1337
01:02:53,519 --> 01:02:58,679
عدة أسئلة أساسية كان الناس

1338
01:02:56,000 --> 01:03:01,880
بحاجة إلى إجابة عليها. هذا رائع. نحن هنا

1339
01:02:58,679 --> 01:03:04,318
لنتعلم. رائع. شكرًا لكم جميعًا.

1340
01:03:01,880 --> 01:03:07,960
إنه لمن دواعي سروري أن أقضي ساعة معكم

1341
01:03:04,318 --> 01:03:10,239
على الغداء. وعيد شكر سعيد

1342
01:03:07,960 --> 01:03:12,440
للجميع في الولايات المتحدة. شكرًا جزيلاً

1343
01:03:10,239 --> 01:03:14,759
يا ماريا على هذه الفرصة والامتياز.

1344
01:03:12,440 --> 01:03:19,079
أهلاً بك يا جورج، وشكرًا

1345
01:03:14,760 --> 01:03:23,480
كبيرًا لك. تصفيق حار و

1346
01:03:19,079 --> 01:03:25,880
أتمنى لك عطلة رائعة. شكرًا. حسنًا.

1347
01:03:23,480 --> 01:03:29,199
وداعًا جميعًا. شكرًا لك جورج. جورج.

1348
01:03:25,880 --> 01:03:29,200
شكرًا لكم جميعًا.


